Local-first token, cost and cache observability for Kimi Code.
Requires the observer binary already on your PATH. This plugin is
wiring only — it declares an MCP server that runs observer; it does not
download or bundle it.
npm i -g @superbased/observer # or: pipx install superbased-observer
observer start # run the local daemonInside Kimi Code:
/plugins install https://github.com/superbasedapp/plugins
A bare GitHub repository URL resolves to the latest release, falling back to
the default branch. The other documented pinned forms also work:
…/tree/<ref>, …/releases/tag/<tag> and …/commit/<sha>.
Downloads go through github.com / codeload.github.com only.
Installed plugins live under $KIMI_CODE_HOME/plugins/managed/<id>/.
Manage them with /plugins list, /plugins info superbased,
/plugins enable|disable superbased, /plugins reload and
/plugins remove superbased. The MCP server this plugin declares can be
toggled on its own with /plugins mcp enable|disable superbased observer.
Kimi Code shows a trust badge per source; a third-party install (this one, until it is listed in an official catalog) defaults the confirmation prompt to cancel, so you have to confirm deliberately.
kimi.plugin.json
belongs at the repository root — the same constraint
gemini-extension.json carries. In this source tree it lives under
kimi-code/superbased/ alongside the other surfaces; the
public repository puts it at the top level, where its name collides with
nothing else that must live there.
| Field | Value |
|---|---|
name |
superbased — the plugin id, matching the documented [a-z0-9][a-z0-9_-]{0,63} pattern. |
version |
Stamped from the observer release tag. |
mcpServers.observer |
observer serve — on-demand project/session/cost queries from inside Kimi Code. |
Captured data lands in the local ~/.observer/observer.db. The MCP server
makes no network calls of its own.
No hooks are declared, and that is not an oversight. Kimi's manifest
documents a hooks vocabulary, but observer has no Kimi hook receiver —
observer hook accepts claude-code, cursor, codex and hermes only. A
declared hook would point Kimi at a command that does not exist. Kimi capture
works without hooks anyway: observer's watcher reads Kimi's own
wire.jsonl traces, and observer kimi -- … routes turns through
the local proxy.
Nothing else is declared either — no skills, agents, commands or system-prompt contribution — because observer ships none of those components, and a manifest key pointing at a path that is not in the plugin is a broken plugin.
observer init writes no Kimi MCP entry today. Kimi's only MCP config
surface is ~/.kimi-code/config.toml, a file observer deliberately never
reads (it holds a plaintext API key), so internal/mcp has no Kimi client
row and there is nothing for this plugin to duplicate.
observer init --kimi-code's proxy-route step is unaffected and still worth
running: it adds a base_url under [providers.openai] so turns go
through the local proxy and token counts come from the wire rather than a
self-report. This plugin declares no proxy route.
The automatic detect-and-skip observer init performs for the Claude Code
plugin is claude-code-only (internal/claudeplugin); no equivalent probe
exists for Kimi. Documented, not built.
- Docs: https://superbased.app/
- Source: https://github.com/superbasedapp/observer
- License: Apache-2.0