/onyx and all its shell commands
must run in the same Ubuntu distribution as the workers. See
Windows via WSL2 for qualification status.
Onyx is designed to be agent-first. The CLI handles credentials, local runtime
files, tool execution, workflow runs, hypothesis workers, immutable ref pushes,
and direct API reporting; the /onyx skill uses those primitives as a
human-facing orchestrator.
Start a New Research Direction
Use/onyx from an agent that has the Onyx skill installed:
Prompt Shape
Short prompts work, but precise prompts help the agent set up better evals.- Minimal
- Better
text /onyx Tune my PID controller gains, minimize error What the Agent Does
1
Clarifies the setup
The agent asks for any missing goal, metric, direction, files in scope, constraints, resources, or stop conditions, then pauses for your approval of those setup inputs before building anything.
2
Creates the campaign
It creates or selects a long-lived Onyx campaign and uses immutable experiment refs for results. The campaign metric contract is immutable.
3
Writes setup.json and onyx.md
It creates the canonical local setup policy and a generated research spec that future agents and humans can read.
4
Declares workflow tools
It declares evaluation, reset/readiness, guardrail, resources, timeouts, output limits, and protected paths in setup. Helper scripts live under
onyx/tools/*.5
Validates setup
It runs local setup validation and writes
onyx/validation.json; failed or stale validation blocks Research.6
Reviews the setup with you
Before committing, it pauses again for your approval of the completed setup, surfacing any concerns or details worth discussing — setup quality directly shapes every downstream hypothesis worker, and setups can involve real hardware.
7
Commits setup
It commits the
onyx/ setup surface so every session assignment starts from a commit containing the validated setup, instructions, and workflow tools.8
Pushes the setup base
In the bundled
/onyx workflow, it pushes the setup base commit before remote campaign setup so GitHub-backed code reads can verify the base commit.9
Plans hypotheses
It creates structured hypothesis plans with focus, hypothesis, starting points, avoid-list, success signals, and give-up signals.
10
Runs hypothesis workers
It starts
onyx research run, a local supervisor that always creates a new
bounded remote session, snapshots its active hypotheses and starting commits,
and asks the server for a worker lease before each provider
launch, sends telemetry-only presence updates, ramp-launches workers in
batches, and pauses briefly on provider startup or rate-limit failures. New
sessions require --experiments, --max-minutes, or both. --experiments
is an exact accepted report target owned by the server. Built-in Codex,
Claude, and OpenCode workers receive prompts over stdin, isolated runtime
directories under .git/onyx/worker-runtime/, worker identity and lease
environment variables, and an explicit onyx-worker CLI. They write raw
provider logs, readable .activity.log files, structured
.activity.jsonl events, per-worker latest-state JSON snapshots, and
manifests under .git/onyx/worker-logs/. Workers run measured workflows,
make exactly one result commit for a measured attempt, push
refs/onyx/experiments/<campaignId>/<runRef>, then report directly to
the API. Overflow reports are retained as internal discarded diagnostics,
stay hidden from normal product surfaces, and never count toward targets or
rankings. If a stop is requested, the
harness gives the provider a grace period and then terminates it before
its terminal cleanup. The first server transition sets an immutable
endedAt cutoff and end reason. Open sessions derive starting, active,
stale, or abandoned liveness from telemetry and leases.11
Adds hypotheses
The human or main-thread orchestrator reviews status, experiments, knowledge, and worker capacity, then adds fresh campaign hypotheses with
onyx research hypothesis add. Session membership is immutable, so newly added or reopened hypotheses join the next session. Closing a hypothesis immediately cancels its existing assignments and workers. Workers do not create successor hypotheses themselves.Change Setup Deliberately
onyx/setup.json, onyx/validation.json, onyx/onyx.md, and onyx/tools/*
are protected setup paths during Research. If you need to change how agents
behave or how measurements work, ask the orchestrator to stop and revise setup
instead of asking hypothesis workers to mutate those files.
Good steering edits include:
- add or remove files in scope;
- add constraints such as “no new dependencies” or “do not change the hardware interface”;
- define guardrails or readiness checks;
- summarize approaches that failed;
- add a new promising idea;
- set stop conditions.
Under the Hood
The agent uses these CLI primitives: Full/orchestrator primitives:/onyx.