Local-first token, cost and cache observability for the Gemini CLI.
Requires the observer binary already on your PATH. This extension is
wiring only — it declares an MCP server that runs observer; it does not
download or bundle it. gemini-extension.json has no description field
to carry that sentence, so it is stated here and in the listing copy.
npm i -g @superbased/observer # or: pipx install superbased-observer
observer start # run the local daemongemini extensions install https://github.com/superbasedapp/pluginsInstalling from GitHub requires git, and the CLI copies the extension —
run gemini extensions update superbased to pick up a new release.
Uninstall with gemini extensions uninstall superbased; disable
without removing via gemini extensions disable superbased
(add --scope=workspace for just the current workspace). Inside the CLI,
/extensions list shows what is loaded.
.claude-plugin/,
.agents/ — do not collide with gemini-extension.json). That choice
is an operator step; nothing here has been published or tested against a
live install.
| Field | Value |
|---|---|
name |
superbased — also the install directory name (~/.gemini/extensions/superbased/). |
version |
Stamped from the observer release tag. |
mcpServers.observer |
observer serve — on-demand project/session/cost queries from inside Gemini. |
No hooks and no custom commands are declared. Observer's hook registry has
no Gemini target (internal/hook registers claude-code, cursor and codex
only), so there is nothing to transpose — and the extensions reference
documents no hooks key anyway. Gemini capture continues to work without
hooks: observer's watcher reads ~/.gemini session logs, and
observer gemini -- … routes turns through the local proxy for exact
token counts.
Captured data lands in the local ~/.observer/observer.db. The MCP server
makes no network calls of its own.
observer init writes no Gemini MCP entry today — internal/mcp
has no Gemini client row — so installing this extension cannot duplicate
anything observer wrote. If a Gemini MCP registrar is added later, the two
would both declare the observer server; Gemini resolves that in
the user's favour (a same-named server in settings.json takes precedence
over an extension's), but the tool schema would still load twice.
The automatic detect-and-skip that observer init performs for the Claude
Code plugin is claude-code-only (internal/claudeplugin); no equivalent
probe exists for Gemini. This is documented, not built.
- Docs: https://superbased.app/
- Source: https://github.com/superbasedapp/observer
- License: Apache-2.0