Codag
Sign in

systems log compression for agents

95% fewer log tokens
Same debugging signal

$curl -fsSL https://codag.ai/install.sh | sh

Free forever.

26.6M tokens
1,200,000 lines · 108 MB
raw logs
1 hour window
3,317 tokens
1 capsule
incident capsule
schema-valid json
2026-05-04T14:22:11Z INFO pod/api-7f9 starting...
2026-05-04T14:22:11Z INFO loaded config /etc/api
2026-05-04T14:22:12Z INFO postgres pool size=20
2026-05-04T14:22:12Z INFO redis ping ok 0.6ms
2026-05-04T14:22:13Z INFO health probe ok 200
2026-05-04T14:22:14Z INFO request id=abc123 path=/v1/users
2026-05-04T14:22:14Z INFO cache hit user:42
2026-05-04T14:22:15Z WARN pool acquire 240ms
2026-05-04T14:22:16Z WARN pool acquire 480ms
2026-05-04T14:22:16Z ERROR psycopg2.OperationalError: connection
2026-05-04T14:22:17Z ERROR retry 1/3 db_users
2026-05-04T14:22:17Z INFO request id=abc124 path=/v1/orders
2026-05-04T14:22:18Z ERROR retry 2/3 db_users
2026-05-04T14:22:18Z ERROR upstream timeout id=abc124
2026-05-04T14:22:19Z INFO cache miss user:99
2026-05-04T14:22:19Z WARN circuit breaker open svc=db
2026-05-04T14:22:20Z INFO request id=abc125 path=/v1/users
2026-05-04T14:22:20Z ERROR pool exhausted, queue=18
2026-05-04T14:22:21Z INFO retry succeeded id=abc126
2026-05-04T14:22:21Z WARN p99 latency 2840ms
2026-05-04T14:22:22Z INFO cache miss user:51
+ 1,199,979 more lines …
{
  "service": "api",
  "window": "14:22:11 to 15:22:11",
  "compression": 8021,
  "evidence": [
    {
      "role": "root_cause",
      "line": 412847,
      "text": "psycopg2.OperationalError"
    },
    {
      "role": "trigger",
      "line": 412831,
      "text": "pool acquire 480ms"
    },
    {
      "role": "consequence",
      "line": 412854,
      "text": "pool exhausted, queue=18"
    }
    // + 4 more, all cited
  ],
  "routine_summary": { "total_lines": 1085399, "template_count": 15 }
}

Agents are great at debugging
until they hit the logs

for individuals

Too costly to read

Every read burns tokens and context. The window fills with routine noise before your agent reaches the answer.

for platform & infra

Too big to read

Millions of lines a day, more than any agent can hold. Most of it never fits the window at all.

Not a summary
A cited capsule

Codag returns schema-valid JSON. Every line it keeps points to a real line number, tagged by its role in the incident. Nothing summarized away, nothing invented.

cited to the line

Every claim references a real line number. No invented evidence.

tagged by role

root_cause, trigger, consequence. Your agent gets causality, not a flat dump.

schema-valid

Strict JSON your agent and tools parse every time.

IncidentCapsule · 1.2M lines → 3.3k tokens
{
"service": "api",
"window": "14:22:11 to 15:22:11",
"compression": 8021,
"evidence": [
{ "role": "root_cause", "line": 412847, "text": "psycopg2.OperationalError" }
{ "role": "trigger", "line": 412831, "text": "pool acquire 480ms" }
{ "role": "consequence", "line": 412854, "text": "pool exhausted, queue=18" }
],
"routine_summary": { "total_lines": 1085399, "templates": 15 }
}

for coding agents

Your agent reads logs
We hand it what matters

Set up once, then wrap any log fetch your agent already makes.

claude code

Hooks + MCP, wired automatically

codag setup installs the hook and the MCP server. Claude reads logs through Codag from then on.

Same Claude. Same answers. Fraction of the token bill.

$ codag setup
detected Claude Code
registered MCP server: codag

claude tail_kubernetes
returns compact incident capsule

codex

MCP, drop-in

Point Codex at the Codag MCP server. Same prompts, compressed logs.

Sign in once. No agent config files to edit.

$ codag mcp serve
tools: tail_aws_logs, tail_vercel, wrap

codex wrap docker logs api
raw logs stay out of the prompt

any source

Wrap any log command
We handle the rest

Drop-in over HTTPS. Point Codag at any log stream you already run, and your agent gets one compact capsule back.

$ codag wrap -- kubectl logs -n prod api
$ codag wrap -- vercel logs --since 1h
$ codag wrap -- aws logs tail /prod/api
$ codag wrap -- railway logs
$ codag wrap -- docker compose logs api
$ codag wrap -- journalctl -u api -f
IncidentCapsule · 1.2M lines → 3.3k tokens · schema-valid
vercel aws cloudwatch railway kubernetes docker datadog sentry journalctl any stdout

Give your agent logs
it can actually read.

Drop-in over HTTPS. Wired into Claude Code and Codex in one command.

$curl -fsSL https://codag.ai/install.sh | sh

Free forever.