Skip to content

Add OpenExecutive as the 32nd runtime - #5921

Merged
vivekchand merged 2 commits into
mainfrom
openexecutive-runtime
Sep 12, 2026
Merged

Add OpenExecutive as the 32nd runtime#5921
vivekchand merged 2 commits into
mainfrom
openexecutive-runtime

Conversation

@vivekchand

@vivekchand vivekchand commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Adds OpenExecutive (SenteLabsAI/OpenExecutive, Apache-2.0, ~4.1k stars) as runtime 32. It is an AI executive team: one Executive persona on FastAPI that routes questions to specialist agents (CFO, CSO, COO, General Counsel, ...), answers over web chat, Slack, email, Telegram, Discord and Google Chat, and runs a scheduler that sends messages on its own later. Pairs with the clawmetry-pro PR carrying the adapter.

Why it fits

Everything is observable from the outside with no vendor cooperation: one SQLite store (episodic_memory.db) holds sessions, an audit log with per-call token usage, and the queue of outbound sends. The standout signal is that queue: a pending email to the board is visible before it goes out.

What changed here (OSS half)

  • Catalogue + loader: PAID_RUNTIMES, _FAMILY_ADAPTER_SPECS, labels, landing path /runtimes/openexecutive, and every session-prefix set (local_store, routes/usage x2, routes/attention, routes/harness, sync._RUNTIME_PREFIXES, app.js _CM_RT_PREFIXES + both label maps).
  • Muse Code fix on the way through: muse_code was missing from sync._RUNTIME_PREFIXES and app.js _CM_RT_PREFIXES, so its sessions bucketed as openclaw there. Added, and pinned by test_the_newest_runtimes_are_in_the_backend_and_frontend_prefix_sets.
  • Declared record: tokens and cost PARTIAL. OpenExecutive writes a usage row for each call the Executive makes (with the real OpenRouter charge when routed there), but its specialist agents call the provider directly and write nothing. A session total is a floor, and runtime_records + docs/compatibility.md say so.
  • Guard verdict: unsupported, with a sentence. One API server serves every conversation, channel and the scheduler, so there is no per-conversation process. New process_control.SHARED_PROCESS_RUNTIMES maps it to a human reason instead of the generic "No signal support for openexecutive". A reopen hint covers the gap.
  • Probe, memory catalogue, compaction coverage: probe globs the clone locations make dev writes to plus /data; memory surfaces the company profile, knowledge base and mcp_servers.json; listed in UNSUPPORTED_COMPACTION because its short-term window drops old turns without recording it.
  • Runtime count 31 to 32 via scripts/sync_runtime_count.py, plus the 7 translated taglines the script does not rewrite.

Testing

  • tests/test_openexecutive_runtime_wiring.py (13 tests, registered in ci.yml).
  • 229 pass across the runtime catalogue, records, count-sync, public-surface and wiring suites after the change.
  • 3 failures in that sweep are pre-existing on clean origin/main e6dd642 (verified in a separate worktree): test_api_runtimes_fallback_lists_both_free_runtimes and both test_runtime_tab_capability_parity tests. Not touched here.
  • Adapter verified against a store written by OpenExecutive's own storage code at upstream 8b2a9a7 (details in the pro PR).

Follow-ups

  • Landing page /runtimes/openexecutive (landing PR, merges after the release).
  • A docs-only PR to OpenExecutive describing how to observe it, after this is live on PyPI.

Spec: https://factory.8090.ai/project/b415065f-ab2f-4f53-8864-0c009fd098cb/requirements/4868d4ff-75ef-4044-821c-dc5f77bcf072 (Extended Runtime Support, AC-GOV-ERS-010.1-.7) and blueprint section "32nd runtime: OpenExecutive" (ADR-ERS-026..028).

No-PRD: adding a runtime adapter to the existing, documented adapter seam (same as Muse Code #5761); no new product surface beyond one more runtime in the existing catalogue.

🤖 Generated with Claude Code

https://claude.ai/code/session_015D9pee1kCZ8NanY9bZirq4

@8090-software-factory

Copy link
Copy Markdown

✅ Drift Bot (ClawMetry): no drift detected

Drift Bot analyzed the changed files against this project's blueprints and requirements and found no drift.

@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Visual diff

Comparing 3b041c6d2058 (head) against the PR base branch.

51 of 70 comparison(s) flagged (>1% pixel diff).

View Before After Diff
desktop overview before after diff · 0.01%
desktop flow before after diff · 0.08%
desktop brain ⚠️ before after diff · 100.00%
desktop usage ⚠️ before after diff · 100.00%
desktop crons ⚠️ before after diff · 2.60%
desktop memory before after diff · 0.02%
desktop security ⚠️ before after diff · 100.00%
desktop subagents ⚠️ before after diff · 100.00%
desktop transcripts ⚠️ before after diff · 100.00%
desktop logs ⚠️ before after diff · 7.40%
desktop skills ⚠️ before after diff · 2.33%
desktop models ⚠️ before after diff · 100.00%
desktop approvals ⚠️ before after diff · 100.00%
desktop alerts ⚠️ before after diff · 100.00%
desktop notifications ⚠️ before after diff · 2.49%
desktop limits ⚠️ before after diff · 100.00%
desktop history ⚠️ before after diff · 100.00%
desktop channels before after diff · 0.02%
desktop harness ⚠️ before after diff · 100.00%
desktop inventory ⚠️ before after diff · 1.62%
desktop nemoclaw ⚠️ before after diff · 100.00%
desktop guard ⚠️ before after diff · 2.74%
desktop signals ⚠️ before after diff · 3.83%
desktop policy ⚠️ before after diff · 100.00%
desktop selfevolve ⚠️ before after diff · 100.00%
desktop swimlane before after diff · 0.25%
desktop tool-catalog ⚠️ before after diff · 100.00%
desktop tracing before after diff · 0.35%
desktop turn-anatomy ⚠️ before after diff · 3.16%
desktop version-impact ⚠️ before after diff · 100.00%
desktop context-economics ⚠️ before after diff · 2.95%
desktop agents before after diff · 0.37%
desktop evals ⚠️ before after diff · 17.21%
desktop bench before after diff · 0.01%
desktop trail before after diff · 0.38%
mobile overview ⚠️ before after diff · 100.00%
mobile flow ⚠️ before after diff · 1.20%
mobile brain ⚠️ before after diff · 100.00%
mobile usage ⚠️ before after diff · 100.00%
mobile crons ⚠️ before after diff · 100.00%
mobile memory before after diff · 0.00%
mobile security ⚠️ before after diff · 100.00%
mobile subagents before after diff · 0.01%
mobile transcripts ⚠️ before after diff · 100.00%
mobile logs ⚠️ before after diff · 5.83%
mobile skills ⚠️ before after diff · 100.00%
mobile models ⚠️ before after diff · 100.00%
mobile approvals ⚠️ before after diff · 5.48%
mobile alerts ⚠️ before after diff · 3.61%
mobile notifications ⚠️ before after diff · 100.00%
mobile limits ⚠️ before after diff · 100.00%
mobile history ⚠️ before after diff · 1.05%
mobile channels ⚠️ before after diff · 100.00%
mobile harness ⚠️ before after diff · 100.00%
mobile inventory ⚠️ before after diff · 2.56%
mobile nemoclaw ⚠️ before after diff · 100.00%
mobile guard before after diff · 0.00%
mobile signals ⚠️ before after diff · 100.00%
mobile policy before after diff · 0.01%
mobile selfevolve ⚠️ before after diff · 100.00%
mobile swimlane ⚠️ before after diff · 3.90%
mobile tool-catalog ⚠️ before after diff · 100.00%
mobile tracing ⚠️ before after diff · 1.14%
mobile turn-anatomy before after diff · 0.44%
mobile version-impact before after diff · 0.01%
mobile context-economics before after diff · 0.04%
mobile agents before after diff · 0.00%
mobile evals before after diff · 0.00%
mobile bench before after diff · 0.72%
mobile trail ⚠️ before after diff · 100.00%

Folder: 3b041c6d2058. Full PNGs also attached as a workflow artefact.

Generated by visual-diff bot. Pixel diffs >1% flagged; eyeball the table before merging. This check is non-blocking — fail = bot bug, not a code problem.

@8090-software-factory

Copy link
Copy Markdown

✅ Drift Bot (ClawMetry): no drift detected

Drift Bot analyzed the changed files against this project's blueprints and requirements and found no drift.

vivekchand and others added 2 commits September 12, 2026 22:40
OSS half of the OpenExecutive runtime (adapter ships in clawmetry-pro):
catalogue + loader spec, labels, landing path, session-prefix sets, probe,
declared record (tokens/cost PARTIAL: specialist calls write no usage row),
memory catalogue, resume hint, compaction coverage, and an explicit Guard
verdict: one API server serves every conversation, so control is
unsupported with a human reason rather than the generic string.

Also adds muse_code to sync._RUNTIME_PREFIXES and app.js _CM_RT_PREFIXES,
which it was missing from, and pins both with a guard.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015D9pee1kCZ8NanY9bZirq4
…ELOG, MODULE_MAP

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015D9pee1kCZ8NanY9bZirq4
@vivekchand
vivekchand force-pushed the openexecutive-runtime branch from 8aa960e to 3b041c6 Compare September 12, 2026 20:42
@8090-software-factory

Copy link
Copy Markdown

✅ Drift Bot (ClawMetry): no drift detected

Drift Bot analyzed the changed files against this project's blueprints and requirements and found no drift.

github-actions Bot pushed a commit that referenced this pull request Sep 12, 2026
@vivekchand
vivekchand merged commit e0537a0 into main Sep 12, 2026
52 checks passed
@vivekchand
vivekchand deleted the openexecutive-runtime branch September 12, 2026 21:04
vivekchand added a commit that referenced this pull request Sep 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant