Skip to content

Cumora 0.5.0

Choose a tag to compare

@yetone yetone released this 27 Aug 07:20
· 279 commits to main since this release
a43a605

A sixth BYOA engine, a cross-tenant read closed, and engines that appear without a daemon restart.

Agent context could be read across tenants (#77, @KIDA-MNESIA)

/runtime/context loaded conversations by id and nothing else — the caller's ids were the authorization. A valid agent runtime token could therefore ask for any conversation and receive its recent messages, reactions, quotes and attachment URLs, including conversations belonging to another company. BYOA operators hold a runtime token on their own machine, so this was not a theoretical reach.

Loading now requires the requesting agent to be active, in the same tenant, and a current member of the conversation. The predicate lives in the shared query, so the in-process scheduler path is covered as well as the HTTP one — unauthorized ids simply contribute no rows.

pi engine (#20, @lyly-bonbon, closes #7)

pi joins Claude Code, Codex, Grok Build, Cursor Agent and OpenCode. It's the closest fit to the adapter contract yet: a real persistent session over pi --mode rpc plus a native steer, so same-turn steering is delivered by pi rather than approximated, and turns settle on agent_settled rather than agent_end (which pi may follow with an automatic retry). Triage runs the most isolated of the six — --no-tools --no-session --no-skills --no-extensions --no-context-files. Because pi speaks to several providers, it also covers the xAI-subscription request in #4.

Engines appear without a restart (#78, #80, @Lieisyourlie, @bingqilinweimaotai)

The daemon detected engines once at startup, so installing a CLI on a paired machine meant restarting the daemon before an agent could use it. Detection now runs on the heartbeat, and the heartbeat and scheduler share one live inventory, so assigning an agent to a newly installed engine actually runs that engine.

The subtlety worth naming: an empty scan and a broken PATH resolver look identical if you only check for output. A failed which/where now keeps the last known-good inventory, while a healthy scan that genuinely finds nothing clears it.

Also

Assigning a kanban card no longer drops the wake it sends (#79, @Lieisyourlie).


Desktop app auto-updates. BYOA hosts want npm i -g cumora@latest plus a daemon restart for pi and the live inventory.