OpenAIProxy / .opencode /AGENTS.md
Wimmboo
chore: remove Google provider entirely
09e4b39
|
Raw
History Blame Contribute Delete
2.75 kB

graphify

This project has a knowledge graph at graphify-out/ with god nodes, community structure, and cross-file relationships.

When the user types /graphify, invoke the skill tool with skill: "graphify" before doing anything else.

Rules:

  • For codebase questions, first run graphify query "<question>" when graphify-out/graph.json exists. Use graphify path "<A>" "<B>" for relationships and graphify explain "<concept>" for focused concepts. These return a scoped subgraph, usually much smaller than GRAPH_REPORT.md or raw grep output.
  • Dirty graphify-out/ files are expected after hooks or incremental updates; dirty graph files are not a reason to skip graphify. Only skip graphify if the task is about stale or incorrect graph output, or the user explicitly says not to use it.
  • If graphify-out/wiki/index.md exists, use it for broad navigation instead of raw source browsing.
  • Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain do not surface enough context.
  • After modifying code, run graphify update . to keep the graph current (AST-only, no API cost).

OpenAI API Proxy

FastAPI proxy that routes OpenAI-compatible chat requests to NVIDIA NIM based on the sk-nvidia key the client uses.

Setup & run

  • Install: pip install -r requirements.txt
  • Copy .env.example to .env and fill in real provider API keys + proxy keys
  • Run: python main.py (uvicorn, http://127.0.0.1:8000)
  • Client calls POST /v1/chat/completions with Authorization: Bearer sk-{provider}-...

Architecture

  • config.py — loads .env, exposes PROVIDER_KEYS (proxy→real key mapping) and REAL_KEYS
  • proxy/providers.pyProvider dataclass registry; adds env_real_key field name, auth_header, handles_202 flag
  • proxy/auth.pyresolve_provider() matches Bearer token against PROVIDER_KEYS; get_real_key() reads the real API key from env
  • proxy/client.pyforward_request() streams or polls upstream; NVIDIA returns HTTP 202 then polls /v1/status/{id}
  • proxy/router.py — FastAPI router with /v1/models, /v1/chat/completions, /v1/health, /v1/keys; create_app() factory mounts static files

Provider quirks

  • NVIDIA: Bearer token auth, async (202→poll), base URL https://integrate.api.nvidia.com

Adding a new provider

  1. Add Provider(...) to proxy/providers.py:PROVIDERS dict
  2. Add REAL_*_KEY and SK_*_KEY env vars in config.py and .env.example
  3. Add model list to MODELS dict in proxy/router.py

Constraints

  • No tests, no CI, no linter/formatter config — not yet set up
  • No database — pure HTTP proxy
  • Timeouts: connect=10s, read=180s; NVIDIA poll interval=2s, max 60 attempts