Wrapped with `tma1 build -- npm test`. Agent retried three times, same error each time.
Stop retrying `npm test` and address this error first: TypeError: Cannot read prop ‘user’ of undefined
TMA1
TMA1 records every LLM call locally, then routes what it sees back into the agent’s next turn — hooks, MCP tools, and anomaly detection.
My agent kept editing files I’d just changed by hand. I wanted it to notice._
AGENT ONBOARDING
Read https://tma1.ai/SKILL.md and follow the instructions to install or upgrade TMA1 for your AI agent
When the same Edit fails three times or a build keeps breaking, TMA1 injects the specific fix path into the next prompt — not into a postmortem next week.
Claude Code can pull Codex’s review on the same file, verbatim, via /tma1-peer. No copy-paste between terminal tabs.
One Go binary. No Docker, no cloud. Data stays in ~/.tma1/.
Features
Closed-loop perception and cross-agent collaboration come first. The dashboards back them up. One Go binary, one local time-series store, no Grafana, no YAML.
TMA1 watches for repeated failures, stale views, broken builds. When a rule fires, it writes a concrete fix path into the agent’s next prompt — not into a dashboard for someone to read tomorrow. Five hooks deliver it. Six rules, each with an actionable suggestion. HIGH severity can block Stop so a broken build doesn’t silently ship.
When TMA1 sees something the agent should act on, it writes a concrete suggestion into the next prompt. These are real strings from the detector — what the agent literally reads:
Wrapped with `tma1 build -- npm test`. Agent retried three times, same error each time.
Stop retrying `npm test` and address this error first: TypeError: Cannot read prop ‘user’ of undefined
A human edited the same file the agent was about to overwrite.
Re-read auth.go before the next edit — your in-memory copy is older than what’s on disk.
Claude Code reads what Codex left on the same file, verbatim. Codex reads what Claude did. The /tma1-peer skill pulls up to 30 messages plus tool footprint from the peer’s last session on this project. Each agent’s own sessions are excluded by caller-aware filtering — no echo chambers.
Claude Code reads what Codex left, verbatim — via the /tma1-peer skill. It works the other way too.
An agent stuck in a retry loop can burn hundreds of dollars. Each agent view has an Anomalies tab. Click any flagged request to jump straight into the session and see what went wrong.
Your agent ran for 25 minutes across 4 turns. What happened? Open the session overlay: left side shows file activity, context breakdown, and API calls. Right side is the full event timeline. Or watch the live canvas while your agent works.
When your agent feels slow, is it the model or the tool calls? p50 and p95 latency per tool, call counts, success rates, and trend lines.
Which model costs the most? Which conversation burned through your budget? Token counts and estimated cost per model, plus burn-rate over time and cache hit ratios.
Your agent can run shell commands, fetch URLs, and be fed injected prompts. TMA1 flags all of it. For OpenClaw it also tracks webhook errors and stuck sessions.
Type a keyword in the Sessions search tab and it finds matching conversations, tool calls, and results across all sessions. Click a result to open the session at that exact event.
How it works
Paste the onboarding instruction into your agent and it handles the rest. Or do it yourself:
One command. Downloads everything into ~/.tma1/. No Docker, no system packages.
Point the OTel endpoint to http://localhost:14318/v1/otlp. Works with Claude Code, Codex, OpenClaw, or any OTel SDK. GitHub Copilot CLI needs no config — TMA1 auto-discovers its session logs.
Browse to localhost:14318 for the dashboard. The interesting part happens in your agent: it starts seeing <tma1-context> blocks and acting on them. Optionally wrap dev / test commands with tma1 build -- <command> so build failures feed the loop too (flags: --watch, --tag, --filter-regex). The dashboard is for the human postmortem; the loop is for the agent.
Security
Your agent reads your codebase, your API keys, your infrastructure. Sending that to a cloud observability service defeats the purpose. Everything stays local.
TMA1 stores traces and conversation logs on your local disk in ~/.tma1/data/. Nothing is uploaded to remote services, and you can inspect or delete the data at any time.
After first launch (which downloads the embedded database engine once), TMA1 makes no further network calls. No analytics, no crash reports, no update checks.
TMA1 is Apache-2.0. Read the code, audit the build, and run it air-gapped.
tma1-server runs as one local process and manages its embedded storage engine. No Docker, no system packages, no runtime dependencies.
Delete ~/.tma1/ and everything is gone. No orphaned cloud state, no remote accounts to close.
FAQ
Any agent that emits OpenTelemetry data, plus a few via JSONL auto-discovery. Claude Code sends metrics and logs. Codex sends logs and metrics, and session JSONL is auto-parsed for conversation replay. GitHub Copilot CLI is zero-config: its session JSONL at ~/.copilot/session-state/ is auto-discovered. OpenClaw sends traces and metrics, and session JSONL is auto-parsed for conversation replay. Any OTel SDK app with GenAI semantic conventions works out of the box. The dashboard auto-detects the data source and shows the right view.
Yes. Run mysql -h 127.0.0.1 -P 14002 to connect to the local SQL endpoint, or open localhost:14000/dashboard/ for the built-in query UI. Traces are in opentelemetry_traces, logs in opentelemetry_logs, session data in tma1_hook_events and tma1_messages, and OTel metrics get auto-created tables.
It depends on traffic and conversation length. A typical setup uses a few hundred MB per month.