OpenView is an iii-native control plane for running coding agents as real workers.
It is built for the workflow operators actually want: launch Claude Code, Codex, Hermes, OpenClaw, OpenCode, Gemini CLI, Goose, Aider, OpenHands, Qwen Code, Cursor Agent, Amp, and other agent CLIs side-by-side; keep each one in its own git worktree; route risky actions through approvals; stream every event; and persist enough state to recover, audit, and hand work off.
OpenView is not trying to be another prompt box. It is the worker/runtime layer for AgentView: agents decide, narrow workers execute, humans approve, iii primitives provide durability, and every run leaves evidence.
Agent CLIs are powerful, but they are usually operated as invisible local processes. That breaks down when a team wants to run several agents at once, compare results, resume work, review approvals, and understand exactly what happened.
OpenView gives that workflow a typed control plane:
- Multi-agent workspaces: one view for many agents, many repos, and many worktrees.
- Worker-first execution: every agent runner is an iii function-call worker, not a hard-coded UI special case.
- Approval gates: file writes, shell commands, credential use, network access, and other risky actions can block for review.
- Durable orchestration: queues, leases, retries, dead letters, streams, sessions, and database state are mapped to iii primitives.
- Inspectable evidence: runs expose events, approvals, worker health, queue state, artifacts, and review bundles.
The Rust workspace already includes:
- worker manifests and invocation contracts for the AgentView runner catalog;
- a core run state machine with approvals, events, graph compilation, resources, sandbox policy, and worker registry types;
- queue/task contracts for leases, visibility timeouts, retries, recovery, requeue, completion, and dead-letter state;
- a local durable store for runs, approvals, events, workers, queue tasks, artifacts, restart snapshots, and evidence summaries;
- CLI surfaces for catalog, manifests, approvals, worker status, run events, queue readiness, cancellation, and evidence export;
- a live iii E2E script that checks harness health, models, streams, session-tree, approvals, durable publish, hook fanout, REST bridge, shell execution, and optional iii-database task-state durability.
The honest status: this repo has the control-plane contracts, local runtime model, CLI demos, and live iii verification path. Full product parity still requires the polished AgentView UI, published runner worker packages for every agent, and production-grade live runner adapters behind the same contracts.
Clone and verify the local Rust surface:
git clone https://github.com/rohitg00/openview.git
cd openview
bash scripts/dev_check.shOr run the core commands manually:
cargo test --workspace
cargo run -p openview-cli -- catalog
cargo run -p openview-cli -- manifest hermes.agent
cargo run -p openview-cli -- demo
cargo run -p openview-cli -- queues readinessThe CLI commands above do not need credentials. They use deterministic local data so developers can review the worker catalog, approval flow, queue readiness, and evidence shape before connecting a live iii runtime.
OpenView's install story is intentionally iii-first. Operators should add workers through the iii worker manager, not copy manifests by hand.
Install iii:
curl -fsSL https://install.iii.dev/iii/main/install.sh | shInstall the OpenView substrate workers:
bash scripts/install_iii_workers.sh --core-onlyThat installs the shared runtime surface OpenView expects:
iii worker add auth-credentials
iii worker add models-catalog
iii worker add provider-anthropic
iii worker add provider-openai
iii worker add provider-router
iii worker add turn-orchestrator
iii worker add session-tree
iii worker add session-inbox
iii worker add hook-fanout
iii worker add policy-denylist
iii worker add approval-gate
iii worker add llm-budget
iii worker add skills
iii worker add shell
iii worker add subagent
iii worker add git-worktree
iii worker add iii-database
iii worker add iii-queue
iii worker add iii-sandbox
iii worker add harnessThen install the AgentView runner wrappers you want:
bash scripts/install_iii_workers.sh --agents-onlyEquivalent manual commands:
iii worker add codex-agent
iii worker add claude-code-agent
iii worker add hermes-agent
iii worker add openclaw-agent
iii worker add opencode-agent
iii worker add gemini-cli-agent
iii worker add goose-agent
iii worker add aider-agent
iii worker add openhands-agent
iii worker add crush-agent
iii worker add qwen-code-agent
iii worker add cursor-agent
iii worker add amp-agentThe wrapper is the iii worker package. The upstream agent CLI is still installed separately and configured by path. That keeps OpenView honest: the control plane owns policy, worktrees, approvals, streams, and durable state; the upstream tool keeps owning its model-specific behavior.
Preview the full install plan without changing your machine:
bash scripts/install_iii_workers.sh --dry-runStart iii and store model credentials through the credential worker:
iii start
iii trigger --function-id auth::set_token --payload '{"provider":"anthropic","credential":{"type":"api_key","key":"sk-ant-..."}}'
iii trigger --function-id auth::set_token --payload '{"provider":"openai","credential":{"type":"api_key","key":"sk-..."}}'OpenView manifests reference credential names and environment key names. They should not store raw secrets.
Each runner worker exposes the same lifecycle shape even when the underlying CLI uses different flags:
- create or select a
git.worktree; - launch the agent CLI through the shell/process sandbox;
- route risky actions through
approval.gate; - write stdout, stderr, tool calls, approvals, and status updates to iii streams;
- persist transcripts and branches in
session-tree; - store run/task state in
iii-databaseandiii-queue; - emit evidence that a human can review.
Current runner manifests:
| Worker | Local binary | Purpose |
|---|---|---|
codex.agent |
codex |
Codex CLI sessions in isolated worktrees. |
claude-code.agent |
claude |
Claude Code sessions in isolated worktrees. |
hermes.agent |
hermes |
Hermes profile/session runs with skills, toolsets, approvals, and events. |
openclaw.agent |
openclaw |
OpenClaw sessions through the shared runner contract. |
opencode.agent |
opencode |
OpenCode sessions through AgentView. |
gemini-cli.agent |
gemini |
Gemini CLI sessions with normalized streams. |
goose.agent |
goose |
Goose sessions scoped to worktrees. |
aider.agent |
aider |
Aider coding runs behind approval gates. |
openhands.agent |
openhands |
OpenHands sessions through the shared runner wrapper. |
crush.agent |
crush |
Crush runs with replayable output streams. |
qwen-code.agent |
qwen |
Qwen Code sessions through AgentView. |
cursor-agent.agent |
cursor-agent |
Cursor Agent sessions as worker runs. |
amp.agent |
amp |
Amp sessions as worker runs. |
Inspect any manifest:
cargo run -p openview-cli -- manifest codex.agent
cargo run -p openview-cli -- manifest claude-code.agent
cargo run -p openview-cli -- manifest hermes.agent
cargo run -p openview-cli -- manifest openclaw.agentFor a real runtime check, run the E2E script:
OPENVIEW_III_MANAGED=1 OPENVIEW_III_E2E_DATABASE=1 bash scripts/e2e_iii_runtime.shWhat it verifies:
- harness worker health;
- model catalog exposes GPT-5 with xhigh support;
- stream write/read round trip;
- session-tree create/append/messages round trip;
- approval queue shape;
- durable publish path;
- hook fanout publish/collect;
- REST bridge invocation;
- shell sandbox execution;
- optional iii-database schema bootstrap, lease heartbeat, expired-lease recovery, retry, and dead-letter behavior.
Set these when your local iii paths differ:
III_BIN=/path/to/iii
III_WORKERS_REPO=/path/to/iii-workers
III_DEMO_SCRIPT=/path/to/harness/scripts/demo.sh
III_E2E_DEMO_DIR=/private/tmp/openview-iii-e2eYou can also run the live check through cargo:
OPENVIEW_RUN_LIVE_III_E2E=1 cargo test -p openview-worker --test live_iii_e2e -- --nocaptureUser goal
|
v
AgentView
|-- planner / builder / reviewer agents
|-- one git worktree per run
|-- approvals, traces, events, terminals, artifacts
v
OpenView control plane
|-- worker registry and manifests
|-- run state machine
|-- approval state
|-- sandbox policy
|-- queue and durable store contracts
v
iii primitives
|-- iii-queue for delivery, leases, retries, dead letters
|-- iii-database for durable state and fallback transactions
|-- streams for live panes and replay
|-- session-tree for transcripts and branches
|-- approval workers for human gates
|-- shell/process sandbox for execution
|-- harness for local UI/event streaming
OpenView keeps the contracts typed in Rust and maps the runtime to iii workers. That makes the system inspectable before it is distributed.
Use the repo check script for the normal loop:
bash scripts/dev_check.shUse strict mode before pushing larger changes:
OPENVIEW_STRICT=1 bash scripts/dev_check.shUse live mode when changing iii adapter behavior:
OPENVIEW_RUN_LIVE_III=1 OPENVIEW_III_MANAGED=1 OPENVIEW_III_E2E_DATABASE=1 bash scripts/dev_check.shManual commands:
cargo fmt --all
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
bash scripts/check_public_copy.shcrates/openview-core Rust contracts, run state, registry, graph, store, policy
crates/openview-worker Worker manifests and runner invocation contracts
crates/openview-cli Operator CLI for catalog, demos, readiness, and evidence
docs/workers.mdexplains worker manifests, resources, runner wrappers, and iii primitive mapping.docs/control-plane.mdexplains AgentView panes, workspace sessions, worker runtime lifecycle, and operator CLI parity.docs/architecture.mdcaptures the broader system shape.docs/plans/iii-adapter-parity.mdtracks iii adapter parity.docs/plans/parity-acceptance-checklist.mdtracks the parity acceptance checklist.
- Publish/install runner worker packages through
iii worker add. - Replace deterministic CLI shims with durable APIs backed by the iii adapter.
- Ship the AgentView UI for side-by-side agents, worktrees, traces, approvals, terminals, files, and evidence.
- Add production restart, retry, cancellation, and output persistence drills for live runners.
- Harden worker marketplace metadata, versioning, health checks, and upgrade flow.
Public docs should describe OpenView directly. Do not leak private research notes, private repo names, or competitor-specific implementation notes into public code or docs. Run:
bash scripts/check_public_copy.sh