Omnigraph
그래프 엔진으로 컨텍스트를 조립하고, 객체 저장소 기반에서 에이전트가 코드처럼 그래프 데이터를 분기·타입·검토·병합·감사·거버넌스합니다
Observability for AI coding agents — token cost, stuck-agent thrash, and MCP/skill context tax, recorded via hooks and OTel. Local-first Parquet, metadata only, optional team cloud.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
See what your AI coding agents actually do.
kikimimi records the activity of the coding agents you already use — Claude Code and Codex CLI today — through their own native mechanisms (hooks, OpenTelemetry, session logs). No proxy, no TLS interception, no per-tool setup beyond one kikimimi init — plus the duckdb CLI for local queries and the dashboard. Everything lands in local Parquet first; sharing anything is opt-in.README 전문 보기 ↗See what your AI coding agents actually do.
kikimimi records the activity of the agents you already use — Claude Code, Codex CLI/Desktop, and Claude Desktop — through their own native mechanisms (hooks, OpenTelemetry, session logs, local conversation cache). No proxy, no TLS interception, no per-tool setup beyond one kikimimi init — plus the duckdb CLI for local queries and the dashboard. Everything lands in local Parquet first; sharing anything is opt-in.
On macOS, the current Claude Desktop Claude mode is collected from its local
IndexedDB conversation store every 10 seconds. Cached user turns and completed
assistant messages appear under Claude Desktop · Claude. Only IDs, timestamps,
and application metadata are saved; titles, messages, attachments, and account
details are excluded. Visible message text is counted locally with a coarse character-based estimate (ASCII / 4, other Unicode characters / 1, rounded up per message); only the numeric estimates are saved. Estimates appear separately from measured usage and never contribute to measured totals or cost. Hidden instructions, thinking, attachments and cache usage are excluded. The persisted conversation-list cache supplies observed conversation models, correlated by organization and conversation ID. These appear as separate conversation.model.observed events and do not assert the model of every historical response. The cache does not report per-message models, measured tokens, costs,
or exact API-request counts, so those remain unknown. It covers conversations the
app has cached, not the entire server-side history; incognito/uncached conversations
and unsupported future cache formats are not covered. Code and older Cowork logs
continue through their existing collection paths.
Response-level model capture is experimental: desktop/scripts/claude/response-model-observer.js observes Claude's StreamTimeline inside the page and saves only response IDs, model slugs and evidence labels to a dedicated local IndexedDB store. The collector accepts these only when they match a cached assistant response and organization. active_turn_selection means a model setting observed alongside the active response ID, not backend inference proof; explicit server changes/fallbacks are retained separately. Completed snapshots never inherit today's model. The observer currently needs activation in the loaded Claude page; reloading or restarting Claude removes it. This is not an always-on Desktop integration. The official application and its security checks are not modified.
Website: kikimimi.dev · Dashboard · Full manual
kikimimi query thrash finds those sessions.unused-mcp and schema-tax show what that costs; skills shows which skills actually get invoked (detecting unused skills isn't built yet).brew install isamisushi/tap/kikimimi
# or:
curl -fsSL https://github.com/isamisushi/kikimimi/releases/latest/download/kikimimi-installer.sh | sh
kkmm is installed alongside as a short alias. kikimimi self-update keeps script installs current.
Also needed for queries and the local dashboard: the duckdb CLI on PATH (brew install duckdb, or a release binary from duckdb.org). Hooks, the daemon, and cloud sync all work without it — kikimimi init just warns if it's missing.
kikimimi init # writes hooks + OTel env into your agent settings (backs up first);
# also installs the daemon as a user service (launchd on macOS,
# systemd --user on Linux) so it survives reboots and crashes
kikimimi web # local dashboard on 127.0.0.1 — nothing leaves your machine; needs duckdb on PATH
kikimimi query thrash # stuck-agent incidents
kikimimi query unused-mcp # context tax you pay for nothing
The local Overview also supports Claude/Codex subscription limits per account,
with usage percentages and reset times. See subscription usage setup
for separate personal/work profiles and kikimimi usage.
No need to run kikimimi agent yourself — init starts it as a service that comes back after a crash or reboot on its own. kikimimi service status shows whether it's installed and running; kikimimi agent still works for a one-off foreground/background run (e.g. while debugging). kikimimi uninstall reverts exactly what init added, service included. Its first-ever start also backfills existing Claude Code session history from ~/.claude/projects, so sessions that finished before this machine started collecting show up right away instead of a blank dashboard.
Metadata only, by default and by schema: tool names, MCP server/tool, skill names, durations, success/failure, tokens, cost, session/repo identifiers. Prompts, tool arguments, file contents, and command lines are not collected, and the hosted sink nulls those fields server-side too. The hook shim always exits 0 — kikimimi failing must never break or slow your agent.
Choose local analysis, personal/team Cloud, and optional S3 export independently. The dashboard's Storage & sharing page shows the viewing scope and setup paths; see Storage & sharing.
Teams using their own S3 can also view the shared export in the dashboard.
Each reader uses their own AWS read access from the Mac app or kikimimi web --read-only;
no PostgreSQL or Kikimimi Cloud account is needed for this mode.
kikimimi login (GitHub device-code flow) syncs metadata-only events from every machine you use — laptops, VMs, CI — into your personal org on kikimimi.dev. Kikimimi Cloud is a separate paid service; the local app requires no Cloud account. The local dashboard defaults to this machine and can also read a shared S3 export; the hosted dashboard reads the selected Cloud workspace. Nothing beyond metadata leaves the machine, same as everything above.
Create a team org on kikimimi.dev to add: invite links, roles with audited admin drilldowns, and a per-machine repo allowlist so personal repos never reach the company org. Prefer your own storage over kikimimi's cloud? kikimimi sink add s3 s3://bucket/prefix writes the same Parquet through your own aws CLI — kikimimi never holds credentials.
A macOS desktop preview is under development in desktop/:
setup controls, a menu-bar entry, and the existing local dashboard with bundled
CLI/DuckDB. It is not yet a signed public download.
Early and moving fast; the kikimimi.v1 schema is additive-only but may still grow. Built in the open — issues and war stories welcome.
Apache-2.0 for everything you install: the agent daemon, CLI, adapters, the kikimimi.v1 schema, the detection SQL, the local web UI, and the docs.
The hosted API/authentication/LiteLLM backend lives in the separate
kikimimi-cloud repository. This OSS repository owns the local/S3 dashboard,
CLI and desktop app, plus optional Cloud connection clients. Cloud login, team,
billing, inventory and Router management screens are private and built in
kikimimi-cloud. Neither repository uses the other as a submodule.
See local dashboard development and the API contract.