Brings over the uncommitted agent-mei work (Mac checkout, Sep 22) plus box follow-ups (Oct 17: agent_mei action namespace in keymap/zed.rs, MEI_BRIDGE.md, RENAME_AGENT_MEI.md, unmetered receipts report 0 uJ). joule_core, JOULE_CODE_* and JouleDB names unchanged. *.bak.* scratch files excluded.
3.1 KiB
3.1 KiB
MeiFleet ↔ agent-mei
Brand: agent-mei hosts MeiFleet.
Load roster
meifleet roster path/to/demo.fleet.toml
# control:
fleet_roster { "path": "..." }
# open on *.fleet.toml routes here
Activate bot (bind grant)
fleet_activate { "id": "research", "apply_grant": true }
- Rebuilds live
CascadeGatefrom the bot's verbs +max_joules(→ µJ). - Sets process
JOULE_CODE_GRANT/JOULE_CODE_BUDGET_UJfor child CLIs. - Stores
fleet_path,drivers,connectorsonfleet_activefor later BYOA / connectors / routines. - Never auto-ACP. L4 only if the bot's grant allows it.
apply_grant: falseselects the bot in UI/state without changing the gate.
MCP: agent_mei_fleet_activate.
Computer (grant-gated)
Requires an activated bot with apply_grant: true.
computer_probe { "allow_host": true }
computer_probe { "allow_local_vm": true }
computer_probe { "allow_box": true }
computer_shell { "cmdline": "echo ok", "allow_host": true }
computer_shell { "cmdline": "pwd", "allow_local_vm": true }
- Uses the active bot's
computerclass (none|host|local_vm|box). - Each privileged class needs its own allow_* opt-in.
- Shells PATH
meifleet; receipt schemameifleet.act/v1(unmetered → 0 uj + provenance none; never invent). - LocalVm:
MEIFLEET_LOCAL_VM_ROOT(+ optionalMEIFLEET_LOCAL_VM_DOCKER). - Box:
MEIFLEET_BOX_URL→GET /v1/health,POST /v1/shell.
MCP: agent_mei_computer_probe, agent_mei_computer_shell.
BYOA (grant-gated)
Requires activated bot with grant applied. Shells PATH meifleet byoa probe|run.
byoa_probe { "driver": "mock", "allow_byoa": true }
byoa_run { "driver": "mock", "prompt": "hello", "allow_byoa": true }
byoa_run { "driver": "claude", "prompt": "…", "allow_byoa": true, "allow_l4_driver": true }
- Frontier drivers need
grant.allows_l4()+allow_l4_driver. - When the bot's IR
driversis non-empty, unlisted kinds are refused. - Stable non-interactive defaults: Claude/Grok
-p, Codexexec --skip-git-repo-check(ARGS env still wins; FORCE_RAW optional). - Receipt:
meifleet.byoa/v1(unmetered → 0 uj + provenance none).
MCP: agent_mei_byoa_probe, agent_mei_byoa_run.
Connectors / routines (thin controls)
connectors_list { "allow_connectors": true }
routines_list {}
- Connectors: IR
connectors[]viameifleet connectors list|probe|invoke(meifleet.connector/v1).- Live MCP when
MEIFLEET_MCP_<ID>_CMD/MEIFLEET_CONNECTORS_CATALOGset; else stubs (web-search,filesystem). - Invoke needs grant ≥ l2 +
allow_connectors.
- Live MCP when
- Routines: fleet-level
[[routines]]viameifleet routines list|due|fire.- Optional
driver(default mock); frontier fire needs L4 +--allow-byoa --allow-l4-driver.
- Optional
MCP: agent_mei_connectors_list, agent_mei_routines_list.
Local Box backend
meifleet boxd --bind 127.0.0.1:8787
# or: meifleet-boxd --bind 127.0.0.1:8787
export MEIFLEET_BOX_URL=http://127.0.0.1:8787
meifleet probe box --allow-box
meifleet shell 'echo hi' --class box --allow-box
Local reference backend only — not a cloud PC. Optional MEIFLEET_BOXD_ROOT sandbox cwd.