MCPcopy
hub / github.com/steipete/oracle

github.com/steipete/oracle @v1.3.0 sqlite

repository ↗ · DeepWiki ↗ · release v1.3.0 ↗
571 symbols 1,531 edges 122 files 1 documented · 0%
README

oracle 🧿 — Whispering your tokens to the silicon sage

Oracle CLI header banner

npm version CI Status Platforms MIT License

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 take up to ten minutes 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.

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 ." to package.json, then run OPENAI_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 (or oracle-mcp) after pnpm build. Tools: consult, sessions; resources: oracle-session://{id}/{metadata|log|request}. Details in docs/mcp.md. - mcporter config (stdio): json { "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-report shows exactly what you’re sending.
  • Readable previews--preview / --render-markdown let 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:coverage

If you’re looking for an even more powerful context-management tool, check out https://repoprompt.com

Name inspired by: https://ampcode.com/news/oracle

Extension points exported contracts — how you extend this code

ResponseStreamLike (Interface)
(no doc) [3 implementers]
src/oracle/types.ts
ToastOptions (Interface)
(no doc)
types/toasted-notifier.d.ts
HeartbeatConfig (Interface)
(no doc)
src/heartbeat.ts
NotifyConfig (Interface)
(no doc)
src/config.ts
BrowserSessionConfig (Interface)
(no doc)
src/sessionManager.ts
BrowserPromptArtifacts (Interface)
(no doc)
src/browser/prompt.ts
PromptCheckOptions (Interface)
(no doc)
src/cli/promptRequirement.ts
CliOptions (Interface)
(no doc)
scripts/agent-send.ts

Core symbols most depended-on inside this repo

log
called by 80
src/mcp/tools/consult.ts
runOracle
called by 34
src/oracle/run.ts
push
called by 25
src/browser/actions/modelSelection.ts
dim
called by 17
src/cli/sessionDisplay.ts
logDomFailure
called by 15
src/browser/domDebug.ts
readFiles
called by 15
src/oracle/files.ts
readSessionMetadata
called by 14
src/sessionManager.ts
resolveRunOptionsFromConfig
called by 13
src/cli/runOptions.ts

Shape

Function 441
Interface 86
Class 22
Method 22

Languages

TypeScript100%

Modules by API surface

scripts/runner.ts59 symbols
src/sessionManager.ts38 symbols
src/oracle/types.ts29 symbols
tests/oracle-cli.test.ts28 symbols
src/oracle/files.ts24 symbols
src/oracle/errors.ts23 symbols
src/cli/sessionDisplay.ts23 symbols
src/cli/tui/index.ts22 symbols
bin/oracle-cli.ts21 symbols
src/oracle/run.ts19 symbols
src/cli/notifier.ts19 symbols
src/browser/actions/assistantResponse.ts18 symbols

Dependencies from manifests, versioned

@biomejs/biome2.3.5 · 1×
@google/generative-ai0.24.1 · 1×
@modelcontextprotocol/sdk1.22.0 · 1×
@types/chrome-remote-interface0.31.14 · 1×
@types/inquirer9.0.9 · 1×
@types/json50.0.30 · 1×
@types/node24.10.1 · 1×
@vitest/coverage-v84.0.9 · 1×
chalk5.6.2 · 1×
chrome-cookies-secure3.0.0 · 1×
chrome-launcher1.2.1 · 1×
chrome-remote-interface0.33.3 · 1×

For agents

$ claude mcp add oracle \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact