Skip to main content

Lightweight LLM observability for indie developers and small teams

Project description

🔭 MiniObserve

Local-first observability for AI agents and LLM apps.

SQLite by default. No account. No cloud. Just run it.

cd backend && pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 7823
# open http://localhost:7823

Who this is for

You're building or experimenting with AI agents and you want to know what's actually happening inside them.

You want to:

  • See every LLM call, tool call, and agent step — in order, with timings
  • Know which calls are burning tokens and costing money
  • Spot when your agent is looping, stuck, or waiting on a slow tool
  • Check if prompt caching is actually working
  • Keep your data on your own machine

You don't want to:

  • Send data to a third-party observability platform
  • Pay for yet another subscription
  • Deal with infra or configuration

Point your coding agent here

The fastest way to add MiniObserve to your app is to let your coding agent do it.

Ask Cursor, Claude Code, Copilot, or any coding agent to read AGENTS.md. It has everything needed to instrument your app end-to-end — tracer setup, LangChain/LangGraph integration, multi-agent tracing, and environment config.


Manual setup

Step 1 — Start the backend (the dashboard + ingest API)

cd backend && pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 7823

Step 2 — Install the SDK

pip install -e ./sdk
# For LangChain / LangGraph:
pip install -e "./sdk[langchain]"

Step 3 — Verify the connection

miniobserve hello

Open http://localhost:7823 — you'll see a test ping appear in the dashboard.

This does not add tracing to your app. It just confirms the server is reachable. To actually capture your agent's LLM calls, tool calls, and steps — point your coding agent at AGENTS.md. For a LangGraph app it's 3–4 lines added to your existing graph.invoke(). For custom agents it's a lightweight Tracer wrapper.


What you get

  • Run timeline — every LLM call, tool call, and agent step in order with latency
  • Cognitive phases — per-span classification: thinking / calling / synthesizing / executing
  • Cost tracking — per-call and per-run cost estimates with cached vs. uncached token breakdown
  • Stuck & waiting detection — flags when your agent loops on the same tool or waits on a slow one
  • Prompt cache visibility — see cache hit rates across a run at a glance
  • Trace view — drill into any span for the full prompt, response, tool args, and metadata

FAQ

Is my data private? Yes — in local mode (SQLite, default) nothing leaves your machine. No telemetry, no external calls.

How do API keys work? In local mode the server accepts requests with no key or with Bearer sk-local-default-key. If you want to separate traces by app or share with teammates, set MINIOBSERVE_API_KEYS="sk_abc123:my-app" in backend/.env. Each key maps to an app name; logs are scoped per app. See AGENTS.md for details.

What are the colored phase labels I see in a run trace?

Phase What it means
thinking LLM reasoning before any tools have run
calling LLM emitting tool calls
synthesizing LLM integrating tool results into a response
executing A tool or child-agent doing real work
unclassified Span didn't match any heuristic

cognitive_waiting and cognitive_stuck are flags, not phases — they appear when a tool is unusually slow or the agent repeats the same tool call with the same arguments.

Which AI providers are supported?

Provider Support
OpenAI (gpt-4o, gpt-4o-mini, gpt-4.1, o3, o4-mini) Full — cost estimates + token normalization
Anthropic (claude-3-5-sonnet, claude-3-5-haiku, claude-opus-4) Full — cost estimates + token normalization
OpenRouter Passthrough — cost estimated when model matches OpenAI/Anthropic pricing
Ollama Passthrough — stored with zero cost

Can I use this without the Python SDK? Yes — any language can send spans via POST /api/log or POST /api/logs. Full schema at /docs on the running server.


Storage

SQLite (default) — zero config, data at ~/.miniobserve/logs.db. Just run the backend.

Supabase — for multi-device, shared teams, or cloud hosting:

export MINIOBSERVE_BACKEND=supabase
export SUPABASE_URL=https://<project>.supabase.co
export SUPABASE_SERVICE_ROLE_KEY=eyJ...
cd backend && uvicorn main:app --host 0.0.0.0 --port 7823

Run backend/supabase_schema.sql once in the Supabase SQL editor first.

See HOSTING.md for Docker, HTTPS, and production setup.


License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

miniobserve-0.1.0.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

miniobserve-0.1.0-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file miniobserve-0.1.0.tar.gz.

File metadata

  • Download URL: miniobserve-0.1.0.tar.gz
  • Upload date:
  • Size: 29.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for miniobserve-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b0d56576de94249fe2a8a079c0137f1169745910cf49c80919c804547b1ae9a1
MD5 313e070869b038e83641f26ecfc754d0
BLAKE2b-256 dc1a3aafb32f31a2a5ad17af23f60e12eb3426409657fdfac703f41980c533de

See more details on using hashes here.

File details

Details for the file miniobserve-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: miniobserve-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 26.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for miniobserve-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a8406cd34d262a17600580a4b07dcf82e1c88e930fd874cc3d5d3c36c06c584d
MD5 a262fc6dccc58ab85ec1bd74a9578594
BLAKE2b-256 c7121324a82feb64ef9bbe753dce43b45680ab6123ba156651a20fb42d06712f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page