Troubleshooting¶
Cannot find module '@copilotkit/runtime' (or @ag-ui/client / rxjs)¶
These are peer dependencies — install them alongside kaboo-runtime:
yarn add @copilotkit/runtime @ag-ui/client rxjs
# add pg only if you use PostgresThreadStore
yarn add pg
History doesn't survive a reload¶
- Confirm you passed the runner to
CopilotRuntime(runner: createKabooRunner(store)), not just constructed it. InMemoryThreadStoresurvives client reloads only for the life of the server process. For durability across server restarts usePostgresThreadStore.- After a process restart, the synchronous query methods (
listThreads,getThreadEvents, …) read an in-memory index — callawait runner.hydrate()once on startup to populate it from the store.
Activity tree / rich UI is empty after replay¶
kaboo-runtime stores events verbatim, so ACTIVITY_SNAPSHOT and CUSTOM events
are preserved. If they're missing, the emitting agent isn't sending them — check
the upstream kaboo-workflows run,
not the store.
Postgres store errors¶
- Tables missing — the store creates its own tables on first use; ensure the
role has
CREATEprivileges, or run it once against a writable schema. - Connection — pass either a
dsn(new PostgresThreadStore({ dsn })) or a sharedpool; see Thread stores. - Persistence failures never crash a run — they surface via
onStoreError(defaultconsole.error). Wire it to your logger to see what failed.
Approval cards stay "submitted" after an answer¶
The answer reached the runner, but onDecision threw (the service refused the
decision or couldn't be reached), so the agent never ran. Before 0.7.1 the
runner sent a bare RUN_ERROR without RUN_STARTED, which leaves CopilotKit's
interrupt state sealed until a reload. Upgrade to 0.7.1 or later together with
kaboo-react 0.11.2 or later: the run opens with RUN_STARTED, the browser shows
the error's message and the cards come back. Then fix the refusal itself; see
What the host must do.
The runner replays but the agent never runs¶
agents: {} means there is no agent to run — replay works but new turns can't
start. Register your real agent (see
Getting started → wire a real agent).