Connect Engineering Work

Every problem, decision, code change, release, and incident becomes part of a connected engineering history that AI agents can record, search, and build on.

Legacy Changelog

  • 1 Β· ProblemπŸ’¬ Slackβ€œWhy a 20% cap?”
  • 2 Β· Decision🎫 JiraSPIN-214 Β· cap approved
  • 3 Β· ChangeπŸ”€ GitHubPR #482 Β· spin-to-win
  • 4 Β· ReleaseπŸš€ GitHubRelease 3.8.0 Β· canary
  • 5 Β· Incident🚨 PagerDutyP1 Β· 5xx at 6.2%
  • 6 Β· RollbackπŸ’¬ Slackβ€œRolling back, I think?”
  • 7 Β· PostmortemπŸ“„ ConfluencePostmortem 2026-03-12
  • 8 Β· Corrective action🎫 JiraOPS-731 Β· 6 actions
  • πŸ€– AI agentClaudeOpens PR #482
  • πŸ€– AI agentCodexWrites the postmortem

How it works

One history. Every agent.

Techlog connects the context scattered across agents, sessions, and engineering tools, so people and AI can understand how problems, decisions, changes, and incidents relate.

Sessions forget. Techlog remembers.Simulated example

Agent session starts empty every time

Press Run simulation to watch three sessions leave linked records.

> Approve the spin-to-win design with a 20% cap
● Design approved: one spin per new account, discount capped at 20%.
> /techlog:record
● /techlog:record(decision.made)
⎿ βœ“ recorded evt_01J9K2D00001
── a new session, 2 days later ──
> Merge PR #482
● Merged PR #482: spin-to-win with the 20% cap.
> /techlog:record
● /techlog:record(change.implemented)
⎿ found evt_01J9K2D00001 the approved design
⎿ link implements β†’ evt_01J9K2D00001 ━━ confirmed
⎿ βœ“ recorded evt_01J9K2D00002
── a new session, 3 days later ──
> Investigate PagerDuty alert P1-5521
● 5xx on /spin is at 6.2%, three days after PR #482. That does not prove the PR caused it.
> /techlog:record
● /techlog:record(incident.opened)
⎿ link observed_after β†’ evt_01J9K2D00002 ━━ confirmed
⎿ link caused_by β†’ evt_01J9K2D00002 β”…β”… hypothesis
⎿ βœ“ recorded evt_01J9K2D00003

Techlog records kept across sessions

  1. decision.madeevt_01J9K2D00001

    Approved spin-to-win: one spin per new account, discount capped at 20%.

    2026-03-10T14:05:00Z Β· spec: docs/specs/spin-to-win.md

    Show JSON
    {
      "schema_version": "0.1-draft",
      "id": "evt_01J9K2D00001",
      "idempotency_key": "demo-spin-decision",
      "type": "decision.made",
      "time": "2026-03-10T14:05:00Z",
      "actor": {
        "kind": "ai_agent",
        "id": "agent:claude-code",
        "on_behalf_of": "user:a.novak"
      },
      "subject": {
        "system": "promo-api",
        "component": "spin-service"
      },
      "status": "recorded",
      "summary": "Approved spin-to-win: one spin per new account, discount capped at 20%.",
      "sources": [
        {
          "kind": "spec",
          "ref": "docs/specs/spin-to-win.md"
        }
      ],
      "provenance": {
        "recorded_by": "agent:claude-code",
        "method": "agent_submitted"
      }
    }
  2. change.implementedevt_01J9K2D00002

    PR #482 merged: spin-to-win with the 20% cap.

    2026-03-12T09:12:44Z Β· git.pr: promo-api#482

    Show JSON
    {
      "schema_version": "0.1-draft",
      "id": "evt_01J9K2D00002",
      "idempotency_key": "demo-spin-pr-482-merged",
      "type": "change.implemented",
      "time": "2026-03-12T09:12:44Z",
      "actor": {
        "kind": "ai_agent",
        "id": "agent:claude-code",
        "on_behalf_of": "user:a.novak"
      },
      "subject": {
        "system": "promo-api",
        "component": "spin-service"
      },
      "status": "recorded",
      "summary": "PR #482 merged: spin-to-win with the 20% cap.",
      "sources": [
        {
          "kind": "git.pr",
          "ref": "promo-api#482"
        }
      ],
      "links": [
        {
          "rel": "implements",
          "target": "evt_01J9K2D00001",
          "basis": "confirmed"
        }
      ],
      "provenance": {
        "recorded_by": "agent:claude-code",
        "method": "agent_submitted"
      }
    }
  3. incident.openedevt_01J9K2D00003

    5xx ratio on /spin reached 6.2%, above the 1.0% rollback threshold.

    2026-03-15T13:38:00Z Β· alert: alert://promo-api/high-error-rate/a-5521

    Show JSON
    {
      "schema_version": "0.1-draft",
      "id": "evt_01J9K2D00003",
      "idempotency_key": "demo-spin-5xx-incident",
      "type": "incident.opened",
      "time": "2026-03-15T13:38:00Z",
      "actor": {
        "kind": "ai_agent",
        "id": "agent:claude-code",
        "on_behalf_of": "user:a.novak"
      },
      "subject": {
        "system": "promo-api",
        "component": "spin-service",
        "environment": "production"
      },
      "status": "open",
      "summary": "5xx ratio on /spin reached 6.2%, above the 1.0% rollback threshold.",
      "sources": [
        {
          "kind": "alert",
          "ref": "alert://promo-api/high-error-rate/a-5521"
        }
      ],
      "links": [
        {
          "rel": "observed_after",
          "target": "evt_01J9K2D00002",
          "basis": "confirmed"
        },
        {
          "rel": "caused_by",
          "target": "evt_01J9K2D00002",
          "basis": "hypothesis"
        }
      ],
      "provenance": {
        "recorded_by": "agent:claude-code",
        "method": "agent_submitted"
      }
    }

Each /techlog:record call writes one event and links it to the earlier event it follows. Open Show JSON on a card to see exactly what is stored. An unproven cause stays a hypothesis.

Open by design. Built for agents.

  • Proposed Β· draft 0.1

    Open event standard

    A vendor-neutral format for recording and linking engineering events.

    A draft proposal, not a finished standard.

    Explore the standard
  • Implemented Β· basic

    MCP interface

    Let compatible AI agents record and query engineering history.

    Five tools, such as techlog_record_event, run in the local server.

    Read the MCP guide
  • Local only

    Techlog platform

    A local prototype for storing, connecting, and exploring events.

    There is no hosted service or tool connector yet.

    Run Techlog locally

Run it on your machine today.

A basic Techlog server runs locally with the example story loaded. Or read how the event model works first.