GitHub - steipete/oracle: Ask the oracle when you're stuck. Invoke GPT-5 Pro with a custom context and files.
Extracto
Ask the oracle when you're stuck. Invoke GPT-5 Pro with a custom context and files. - steipete/oracle
Contenido
oracle 🧿 — Whispering your tokens to the silicon sage
Oracle gives your agents a simple, reliable way to bundle a prompt plus the right files and hand them to another AI. It currently speaks GPT-5.1 and GPT-5 Pro; Pro runs can now take up to an hour and often return remarkably strong answers.
Two engines, one CLI
- API engine — Calls the OpenAI Responses API. Needs
OPENAI_API_KEY. - Browser engine — Automates ChatGPT in Chrome so you can use your Pro account directly. Toggle with
--engine browser; no API key required.- Duration flags such as
--browser-timeout/--browser-input-timeoutacceptms,s,m, orh(and you can chain them:1h2m10s). Defaults are 20 m / 30 s.
- Duration flags such as
If you omit --engine, Oracle prefers the API engine when OPENAI_API_KEY is present; otherwise it falls back to browser mode. Switch explicitly with -e, --engine {api|browser} when you want to override the auto choice. Everything else (prompt assembly, file handling, session logging) stays the same.
Note: Browser engine is considered experimental, requires an OpenAI Pro account and only works on macOS with Chrome.
Windows/Linux browser support is in progress; until then, use --engine api or bundle files and paste manually.
Your system password is needed to copy cookies. To skip Chrome/Keychain entirely, pass inline cookies via
--browser-inline-cookies <json|base64> or --browser-inline-cookies-file <path> (fallback files at
~/.oracle/cookies.json or ~/.oracle/cookies.base64). API engine is stable and should be preferred.
Quick start
# One-off (no install) OPENAI_API_KEY=sk-... npx -y @steipete/oracle -p "Summarize the risk register" --file docs/risk-register.md docs/risk-matrix.md # Browser engine (no API key) npx -y @steipete/oracle --engine browser -p "Summarize the risk register" --file docs/risk-register.md docs/risk-matrix.md # Globs/exclusions npx -y @steipete/oracle -p "Review the TS data layer" --file "src/**/*.ts" --file "!src/**/*.test.ts" # Mixed glob + single file npx -y @steipete/oracle -p "Audit data layer" --file "src/**/*.ts" --file README.md # Dry-run (no API call) with summary estimate oracle --dry-run summary -p "Check release notes" --file docs/release-notes.md # Alternate base URL (LiteLLM, Azure, self-hosted gateways) OPENAI_API_KEY=sk-... oracle --base-url https://litellm.example.com/v1 -p "Summarize the risk register" # Inspect past sessions oracle status --clear --hours 168 # prune a week of cached runs oracle status # list runs; grab an ID oracle session <id> # replay a run locally
How do I integrate this?
CLI (direct calls; great for CI or scripted tasks)
- One-liner in CI:
OPENAI_API_KEY=sk-... npx -y @steipete/oracle --prompt "Smoke-check latest PR" --file src/ docs/ --preview summary. - Package script: add
"oracle": "oracle --prompt \"Review the diff\" --file ."topackage.json, then runOPENAI_API_KEY=... pnpm oracle. - Don’t want to export the key? Inline works:
OPENAI_API_KEY=sk-... oracle -p "Quick check" --file src/.
MCP (tools + resources; mix-and-match with the CLI sessions)
- Run the bundled stdio server:
pnpm mcp(ororacle-mcp) afterpnpm build. Tools:consult,sessions; resources:oracle-session://{id}/{metadata|log|request}. Details in docs/mcp.md. - mcporter config (stdio):
{ "name": "oracle", "type": "stdio", "command": "npx", "args": ["-y", "@steipete/oracle", "oracle-mcp"] } - You can call the MCP tools against sessions created by the CLI (shared
~/.oracle/sessions), and vice versa.
Highlights
- Bundle once, reuse anywhere — Prompt + files become a markdown package the model can cite.
- Flexible file selection — Glob patterns and
!excludes let you scoop up or skip files without scripting. - Pro-friendly — GPT-5 Pro background runs stay alive for ~10 minutes with reconnection + token/cost tracking.
- Two paths, one UX — API or browser, same flags and session logs.
- Search on by default — The model can ground answers with fresh citations.
- File safety — Per-file token accounting and size guards;
--files-reportshows exactly what you’re sending. - Readable previews —
--preview/--render-markdownlet you inspect the bundle before spending.
Configuration
Put per-user defaults in ~/.oracle/config.json (parsed as JSON5, so comments/trailing commas are fine). Example settings cover default engine/model, notifications, browser defaults, and prompt suffixes. See docs/configuration.md for a complete example and precedence.
Flags you’ll actually use
| Flag | Purpose |
|---|---|
-p, --prompt <text> |
Required prompt. |
-f, --file <paths...> |
Attach files/dirs (supports globs and ! excludes). |
-e, --engine <api|browser> |
Choose API or browser automation. Omitted: API when OPENAI_API_KEY is set, otherwise browser. |
-m, --model <name> |
gpt-5-pro (default) or gpt-5.1. |
--base-url <url> |
Point the API engine at any OpenAI-compatible endpoint (LiteLLM, Azure, etc.). |
--azure-endpoint <url> |
Use Azure OpenAI (switches client automatically). |
--files-report |
Print per-file token usage. |
--dry-run [summary|json|full] |
Inspect the request without sending (alias: --preview). |
See docs/openai-endpoints.md for advanced Azure/LiteLLM configuration.
Sessions & background runs
Every non-preview run writes to ~/.oracle/sessions/<slug> with usage, cost hints, and logs. Use oracle status to list sessions, oracle session <id> to replay, and oracle status --clear --hours 168 to prune. Set ORACLE_HOME_DIR to relocate storage.
Add --render (alias --render-markdown) when attaching to pretty-print the stored markdown if your terminal supports color; falls back to raw text otherwise.
Recommendation: Prefer the API engine when you have an API key (--engine api or just set OPENAI_API_KEY). The API delivers more reliable results and supports longer, uninterrupted runs than the browser engine in most cases.
Wait vs no-wait: gpt-5-pro API runs default to detaching (shows a reattach hint); add --wait to stay attached. gpt-5.1 and browser runs block by default. You can reattach anytime via oracle session <id>.
Testing
pnpm test
pnpm test:coverageIf you’re looking for an even more powerful context-management tool, check out https://repoprompt.com
Name inspired by: https://ampcode.com/news/oracle
Fuente: GitHub
