TMA1
Local-first LLM observability that feeds what it records back into the agent's next turn via hooks and MCP.
- Source repo
- tma1-ai/tma1
- Stars
- ★ 124
- Last updated
- 6d ago
- License
- Apache-2.0
- Primary language
- Go
- FA score
- 51/100 · Major gaps
At a glance
- How it runs
- Works with
- Portable with changesCodex · Claude CodeOpenAI API · Claude API (Partial support)
- Cost
- Free software; you pay for model usage
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- A developer running long Claude Code or Codex sessions who wants each new turn to automatically know which files changed, whether the build broke, and what anomalies are active.
- Not a fit if
- Teams needing authentication or multi-tenant isolation — the tool explicitly has neither
- Teams standardized on a hosted cloud observability backend — all data stays in ~/.tma1/ on the machine
- Production users who avoid pre-release software — every release so far is a pre-release
- Source review
- 51/100 · Major gaps
What does this agent do, and when should you use it?
TMA1 is a local-first observability layer for LLM agents, built on GreptimeDB and shipped as a single binary with no Docker, Grafana, or cloud account required. It ingests traces, metrics, and logs over OTLP/HTTP from Claude Code, Codex, and any GenAI app, plus hook events and JSONL transcripts, and stores everything in a local GreptimeDB instance. It then closes the loop: hook responses become a <tma1-context> block in the agent's next turn, and ten MCP tools answer on-demand questions about session state, anomalies, build status, peer sessions, and past conversations. The embedded dashboard covers token usage, cost estimates, latency, tool activity, conversation replay, and raw SQL. Deployment is a background service on one machine — a launchd agent, a systemd user unit, or a Windows scheduled task — writing to ~/.tma1/, with no authentication because it is explicitly a local-only tool.
tma1-server binds port 14318 and does four jobs at once: it reverse-proxies OTLP, serves the /api/hooks endpoint, hosts the dashboard, and runs an MCP stdio server. OTLP traffic (/v1/otlp, or per-signal /v1/traces, /v1/metrics, /v1/logs) is forwarded to GreptimeDB, which TMA1 downloads and starts as a child process on first launch. Adapters register agent hooks; Claude Code gets all 27 hook events for telemetry but only five inject content (SessionStart, UserPromptSubmit, PostToolUse, Stop, PreCompact), while Codex registers five and injects on four. The tma1 build wrapper (with --watch, --tag, --filter-regex, --debounce) captures build and test output into tma1_build_events for build status and repeated-failure detection. MCP exposes get_context_bundle, get_session_state, get_anomalies, get_build_status, get_external_changes, get_project_state, get_peer_sessions, search_sessions, get_session_transcript, and exec_query, the last accepting a single read-only SELECT. Data is reachable through four surfaces: the TMA1 dashboard, MCP, MySQL protocol on port 14002, and GreptimeDB's own dashboard.
- A developer running long Claude Code or Codex sessions who wants each new turn to automatically know which files changed, whether the build broke, and what anomalies are active.
- Someone working with a persistent
npm run devorcargo watchprocess, usingtma1 build --watchso failures reach the agent without manual log pasting. - A team mixing Claude Code and Codex on the same project, using
/tma1-peer codexso one agent reads the other's work verbatim. - An engineer asking "which past session discussed retry backoff?" and answering it with
/tma1-search retry backoffplusget_session_transcript. - A lead who wants token spend, cache-read share, tool failures, and compaction events compared side by side across two sessions.
- A data engineer who prefers querying raw traces, metrics, and logs directly over MySQL or the GreptimeDB dashboard.
How do you install or deploy this agent?
One-line installer for macOS or Linux, with TMA1_ADAPTER selecting the agent to wire up:
curl -fsSL https://tma1.ai/install.sh | TMA1_ADAPTER=claude-code bash
curl -fsSL https://tma1.ai/install.sh | TMA1_ADAPTER=codex bash
curl -fsSL https://tma1.ai/install.sh | TMA1_ADAPTER=all bashServer only, wiring an agent later:
curl -fsSL https://tma1.ai/install.sh | bashWindows PowerShell, adapter passed as an environment variable:
$env:TMA1_ADAPTER = 'claude-code'; irm https://tma1.ai/install.ps1 | iexThe script registers a background service and starts it; the dashboard is at <http://localhost:14318> when it exits. First start downloads GreptimeDB (pinned to v1.3.0 by default). No Docker or cloud account. From source:
git clone https://github.com/tma1-ai/tma1.git
cd tma1
make build
./server/bin/tma1-serverHow do you use this agent?
Once wired, each agent turn receives a <tma1-context> block automatically. Manage adapters per project with:
tma1-server install --adapter claude-code --project .
tma1-server uninstall --adapter claude-code --project .Capture build and test output:
tma1 build --tag test -- make test
tma1 build --watch --tag dev -- npm run devRun the MCP server (normally spawned by the agent, but useful to verify):
tma1-server mcp-serveUse the skills and tools from inside the agent:
/tma1-search retry backoff
/tma1-search --session 3d8f1d0a
/tma1-peer self --limit 3Key environment variables:
TMA1_PORT=14318
export TMA1_DATA_DIR=~/.tma1
export TMA1_DATA_TTL=60d
export TMA1_LLM_API_KEY=... # only for optional prompt evaluation
export TMA1_LLM_PROVIDER=anthropic
export TMA1_DISABLE_INJECTION=1 # record hooks but inject nothingRaw SQL is available on MySQL port 14002 or through GreptimeDB's dashboard.
What are this agent's strengths and limitations?
- It actually closes the loop: hook responses become next-turn agent context, and ten MCP tools pull state on demand, rather than only showing a passive dashboard.
- Very light footprint — one binary plus an auto-downloaded GreptimeDB, with no Docker, Grafana, OTel Collector, or cloud account.
- All data stays in
~/.tma1/, and four query surfaces (dashboard, MCPexec_query, MySQL on 14002, GreptimeDB's own UI) let you analyze it yourself. - Covers Claude Code, Codex, Copilot CLI, OpenCode, and generic GenAI-semconv apps; cross-agent
/tma1-peerreading is a distinctive capability. - Failure behavior is explicitly designed: when TMA1 is slow or unreachable the hook returns empty stdout and the agent continues.
- Every release so far is a pre-release, so stability and interfaces may still change.
- No authentication and no multi-tenant mode — it is a local-only tool, not something to share or expose on a network.
- Cost estimates rely on standard short-context list prices checked on 2026-10-30; unknown models show no estimate, and subscription plans, service-tier adjustments, and regional premiums are excluded.
- The installer writes global files only and the binary does not refresh them at startup; re-run
install --adapterafter upgrading or the server logs a mismatch warning. - Optional prompt evaluation requires
TMA1_LLM_API_KEYand sends selected requests plus bounded conversation excerpts to Anthropic or OpenAI.
How does this agent compare with similar options?
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| TMA1 This agent | 51 · Major gaps | Self-hosted serviceFree + model costs | ★ 124 | 6d ago | Go | Codex · Claude Code |
| Langtrace | 42 · Major gaps | Library / SDKFreemium | ★ 1.2k | 11mo ago | TypeScript | OpenAI API · Claude API |
| Laminar | 41 · Major gaps | Self-hosted serviceFreemium | ★ 3.5k | today | TypeScript | OpenAI API · Claude API |
| MUXI AI Application Server | 59 · Major gaps | CLIFree + model costs | ★ 187 | 1mo ago | — | — |
How does FollowAgents rate this agent?
Why each dimension lost points
README states no authentication, local-only 127.0.0.1 binding, and data under ~/.tma1, supporting least privilege and data-flow transparency (2). But install is curl|bash that registers a background service and downloads a GreptimeDB binary with no pre-install confirmation or checksum guidance, so user confirmation scores 1; session transcripts, prompts, and optional LLM evaluation send conversation excerpts to an external provider with only a one-line note, so sensitive data handling scores 1; dependency security shows only a pinned GreptimeDB tag, no checksum/signature, scoring 1; external effects (global hooks, MCP config, background service) have an uninstall but no data rollback/recovery, scoring 1; source attribution is only the LICENSE copyright line and publisher is unverified, scoring 1.
README is internally consistent on ports, tables, hook injection counts, and cost semantics (2); but runtime download of the GreptimeDB binary and reliance on an external install.sh make availability network/third-party dependent (1); failure messaging only notes empty stdout when the hook is unreachable, with no error codes or diagnostics (1).
Targets Claude Code, Codex, Copilot CLI, OpenCode, and generic GenAI OTel with clear scenarios (2); explicitly lists absent capabilities as boundaries (2); hook injection events and MCP tool triggers are described precisely (2); cross-platform macOS/Linux/Windows and multi-agent fit is good (2).
Clear documentation structure with docs index and install notes (2/2); but all releases are pre-release, so naming/version stability is weakly evidenced (1); rich examples (2); dedicated known-limitations section (2); full Apache-2.0 LICENSE (3); no CHANGELOG, version only via badge (1); maintainer responsibility unverified with no governance note (1).
Outputs (dashboard, MCP tools, context block) are described concretely and usable (2); marginal value of closing the agent loop is argued clearly (2); but cost estimates depend on external prices and optional LLM evaluation incurs extra cost, so cost-benefit evidence is limited (1).
Most claims are traceable within the README, but price dates and hook counts lack external corroboration (1); only README and CI are available as sources, limiting cross-source corroboration (1); estimates vs. facts are reasonably separated (cost semantics, AI Insights caveats) (2).
- The installer runs via curl|bash, registers a background service, and downloads a GreptimeDB binary; review the script and verify downloads first.
- Session transcripts and prompts may be sent to an external LLM provider for evaluation; confirm data-egress and key-management policy.
- No authentication and local-only binding; changing TMA1_HOST to expose the port introduces risk.
- Publisher identity is unverified and all releases are pre-release; assess stability and maintenance commitment before production use.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
v0.3.0-beta4 Pre-release
Release notes excerpt
What's Changed * feat(pricing): price cache reads, cache writes and OpenAI Fast mode by @killme2008 in https://github.com/tma1-ai/tma1/pull/113 Full Changelog: https://github.com/tma1-ai/tma1/compare/v0.3.0-beta3...v0.3.0-beta4View on GitHub ↗
FAQ
Can I use TMA1 without an adapter?
/tma1-* commands require the claude-code or codex adapter.Does any data leave the machine?
~/.tma1/. The only outbound path is optional prompt evaluation, which needs TMA1_LLM_API_KEY and TMA1_LLM_PROVIDER and sends the selected request and bounded conversation excerpts to the configured provider.What happens if TMA1 is down?
Do I need to install GreptimeDB or MySQL myself?
~/.tma1/config/, downloads the binary if needed (default v1.3.0), and runs it as a child process; port 14002 is just an optional query entry point.Can I turn off context injection?
TMA1_DISABLE_INJECTION=1 still records hook events but injects nothing, and TMA1_ENABLE_FILE_CALLBACK=1 writes .tma1-context.md for agents that do not use MCP.