Asynchronous web oracles for coding agents
Send the hard question. Keep working.
Keep using Oh My Pi or pi in your terminal. /oracle packs a context-rich archive of the repository, hands it with your prompt to ChatGPT or Grok in an isolated browser session, and returns immediately. The answer is saved to disk, and the session that asked gets one best-effort wake-up when it arrives.
- Oh My Pi or pi
- ChatGPT or Grok subscription
- Chrome or Chromium
- Node ≥ 22.19.0
Uses your own ChatGPT or Grok web account, not an API key.
Archive: /tmp/oracle-9b2e5d1c-7f3a-4c8e-b1d6-2a9f0e4c7d31/context-…tar.zstResponse will be written to: /tmp/oracle-9b2e5d1c-7f3a-4c8e-b1d6-2a9f0e4c7d31/response.md
you keep working
response: /tmp/oracle-9b2e5d1c-7f3a-4c8e-b1d6-2a9f0e4c7d31/response.md
How it works
A second opinion.
Not a blocked session.
The host agent keeps control of context selection and safety checks. ChatGPT or Grok does the slow second-opinion work in the background.
- 01
Preflight
Check local session and auth readiness before gathering context.
- 02
Pack
Build a context-rich provider archive after default exclusions and pruning.
- 03
Isolated browser
Upload the archive and prompt in a background provider web runtime.
- 04
Answer on disk
Save the response and artifacts under
/tmp/oracle-<job-id>/. - 05
One wake-up
Send one best-effort completion wake-up to the session that asked.
If the wake-up is missed, the result stays on disk: /oracle-read <job-id>.
ChatGPT .tar.zst · up to 250 MiB
Grok .tar.gz · up to 200 MiB
Upload ceilings apply after default exclusions and pruning.
The boundary
What leaves your machine.
Exactly two things per job, under your own account. No telemetry, no hosted control plane.
Leaves
- Your prompt
Sent to the selected provider through its web app.
- One project archive
Inputs must resolve inside the project without symlink escapes, or the job is rejected locally.
Under your account. Provider-side handling follows your ChatGPT or Grok account and its data settings.
Stays
- Your real Chrome profile
Cookie import reads it once, read-only. It is never automated by default; the opt-in relay owns one pinned tab in your signed-in Chrome.
- Excluded files, by default
.git, tool state,secrets/,.env*, keys, and databases are excluded during directory expansion. Explicitly named paths are included as named. - The answer and artifacts on disk
The local job directory retains the result even if the wake-up is missed; cleanup and retention can remove it.
Default exclusions do not catch every secret; pass narrower paths when the whole repository should not leave the machine. Read the security model before sending private or regulated code.
Get started
Setup, once.
Install for your host, import provider auth, then ask a small question against the real repository.
-
Install for your host
Choose Oh My Pi or
pi.pi-oracleon npm is the upstream package and does not carry this fork's changes. Remove it first withomp plugin uninstall pi-oracleorpi remove npm:pi-oracle. -
Sync provider auth
/oracle-authRun in a persisted Oh My Pi or pi session to import cookies for your default provider into an isolated seed profile that each job clones. Use
/oracle-auth grokfor Grok when ChatGPT is the default. -
Send your first question
/oracle Read README.md and package.json. In five bullets, what does this package do?Keep working. Read the saved answer with
/oracle-read <job-id>when it arrives. Continue in the same provider thread with/oracle-followup <job-id> <request>.
Inspect with /oracle-status, cancel with /oracle-cancel <job-id>, and remove terminal jobs with /oracle-clean <job-id|all>. All commands and tools.
Choose the right tool
Use it when
- You review broad repository changes and want a slower, larger second opinion without blocking the main agent turn.
- You have a ChatGPT or Grok web subscription and want to use it from the agent instead of paying per API token.
- Migration, architecture, or failure-mode analysis benefits from a large archive of the real code and follow-ups in the same provider thread.
Use something else when
- The task is a short local coding change the host agent can do directly.
- The project must not be uploaded to ChatGPT, Grok, or another web provider.
- You need a hosted, multi-user, or API-key-based route; this is a single-operator local tool.
Status
Experimental public beta.
Forked from fitchmultz/pi-oracle. Provider UI, auth, model controls, and artifact downloads can drift between provider updates.
- Package
omp-oracle 0.4.14on npm. The GitHub URL tracksmain.- Hosts
pi 1.5.0tested for this release, the development baseline. Oh My Pi recorded on18.2.6,18.2.7,18.2.11,18.12.3,18.12.6,18.13.3,18.14.1,18.14.2,18.15.0, and18.18.3. Both hosts are required by the release gate.- Platforms
- macOS and Ubuntu Linux required by the release gate. Windows native declared and validated upstream, not re-qualified by this fork.
- Runtime
- Node
>=22.19.0to install and run; Node 24+ required by the release gate. - Last release proof
- — live eight-preset ChatGPT proof and the macOS / Ubuntu release gate passed. Grok,
/oracle-auth, and the relay transport were not exercised in this release proof. - Providers
- ChatGPT:
pro_standard,pro_extended,thinking_light,thinking_standard,thinking_extended,thinking_heavy,instant,instant_auto_switch, plusdeep_research. Grok:heavyonly.Deep Research needs a shared Chrome transport and is excluded from the release preset proof; operator runs are recorded in the ledger.
Presets and oracle.json configuration · Exact compatibility and known limits · Dated release evidence
Companion projects
The OMP family.
OMP NInfer
Durable local inference.
OMP Session Gateway
Every live session, one private mobile page.