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

At a glance

How it runs
Self-hosted serviceMCP serverAgent plugin / skill
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
GreptimeDB v1.3.0 (downloaded automatically)macOS, Linux or WindowsAn OTLP-capable agent or GenAI app (optional)Shell / CLINetwork accessLocal filesystemMCP Server
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

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.

  1. 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.
  2. Someone working with a persistent npm run dev or cargo watch process, using tma1 build --watch so failures reach the agent without manual log pasting.
  3. A team mixing Claude Code and Codex on the same project, using /tma1-peer codex so one agent reads the other's work verbatim.
  4. An engineer asking "which past session discussed retry backoff?" and answering it with /tma1-search retry backoff plus get_session_transcript.
  5. A lead who wants token spend, cache-read share, tool failures, and compaction events compared side by side across two sessions.
  6. 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 bash

Server only, wiring an agent later:

curl -fsSL https://tma1.ai/install.sh | bash

Windows PowerShell, adapter passed as an environment variable:

$env:TMA1_ADAPTER = 'claude-code'; irm https://tma1.ai/install.ps1 | iex

The 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-server

How 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 dev

Run the MCP server (normally spawned by the agent, but useful to verify):

tma1-server mcp-serve

Use the skills and tools from inside the agent:

/tma1-search retry backoff
/tma1-search --session 3d8f1d0a
/tma1-peer self --limit 3

Key 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 nothing

Raw SQL is available on MySQL port 14002 or through GreptimeDB's dashboard.

What are this agent's strengths and limitations?

Pros
  • 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, MCP exec_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-peer reading is a distinctive capability.
  • Failure behavior is explicitly designed: when TMA1 is slow or unreachable the hook returns empty stdout and the agent continues.
Limitations
  • 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 --adapter after upgrading or the server logs a mismatch warning.
  • Optional prompt evaluation requires TMA1_LLM_API_KEY and 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?

FollowAgents source review · FARS-2.1
Major gaps
51/ 100 5-point scale 2.6 / 5
Trust 12/29
Reliability 6/14
Adaptability 12/18
Convention 10/18
Effectiveness 7/13
Verifiability 4/8
Why each dimension lost points
Trust12 / 29 · 2.1/5

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.

Reliability6 / 14 · 2.1/5

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).

Adaptability12 / 18 · 3.3/5

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).

Convention10 / 18 · 2.8/5

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).

Effectiveness7 / 13 · 2.7/5

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).

Verifiability4 / 8 · 2.5/5

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).

Risks and how to mitigate them
  • 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.
Evidence confidence: Low Reviewed Oct 30, 2026 Reviewed revision e95aef8da17c
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. 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-beta4
    View on GitHub ↗

FAQ

Can I use TMA1 without an adapter?
Yes. OTLP traffic to port 14318 is recorded without one, and Copilot CLI sessions are discovered from disk; but context injection and the /tma1-* commands require the claude-code or codex adapter.
Does any data leave the machine?
By default everything is written to ~/.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?
Nothing breaks. The hook returns empty stdout when TMA1 is unreachable or slow, so the agent continues without the injected context.
Do I need to install GreptimeDB or MySQL myself?
No. On first start TMA1 writes a GreptimeDB config into ~/.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?
Yes. Setting 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.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents