Making Agent Work Visible

exponentialbuilding-in-publiclaunch

It’s early July. Exponential is getting close to something I’d be comfortable putting in front of strangers. But there are three gaps that keep bothering me. Not missing features exactly, but missing coherence. Places where the system doesn’t quite connect to itself.

Artifacts

The AiSE Kit produces artifacts: specs, walkthroughs, decision logs. Up to now, those lived as markdown files in .aise/ directories in the repo. The issue tracker knew nothing about them. If you wanted to see a story’s spec, you had to find the right file. The issue just had a title and description.

That disconnect has been bothering me since April, when I realized the planning track belongs in the issue tracker. The spec is the most important artifact of a story. It’s the contract between human and agent. It should be visible on the issue itself, not buried in a directory tree.

This week I built the artifact storage layer. Specs, walkthroughs, and generic attachments are now first-class objects in Exponential. They’re stored through the event log (just like everything else), accessible through CLI, MCP tools, and the web UI. On the issue detail view, you see tabs for the spec and walkthrough right alongside the activity feed.

When an agent builds a feature using the AiSE process, the spec and walkthrough automatically attach to the issue. This is the connection that makes AiSE and Exponential a coherent system rather than two separate tools. The issue tracks the what. The artifacts capture the why and the how.

Timeline

The project timeline view shows a chronological feed of everything that happened: issues created, statuses changed, branches merged, comments added. You can filter by person, expand a day to see individual events, and click through to the relevant issue.

This matters because of how human-agent teams actually work. The agent built three features overnight? The human reviews the work in the morning. Without a timeline, that means opening each issue individually, reading the activity feed, context-switching between them. With it, you get one chronological stream: here’s everything that happened while you were away, in order, with links to the diffs and specs.

Agent identity

This was the subtlest change but maybe the most important one.

Up to now, when an agent made a change through MCP, the event was attributed to the MCP server, a faceless system actor. The activity feed showed “MCP: updated status to In Progress” which told you nothing about which agent did the work or on whose behalf.

The fix: agents now identify themselves. The MCP tools accept a principal, and the UI renders agent activity with the agent’s name as the primary actor, a bot icon to distinguish it from human activity, and a tooltip showing whose session the agent is running in. “Claude (via Nic): completed xpo-22a371.”

This matters because in a human-agent team, agent work shouldn’t be invisible. If an agent is a team member, its work should be visible, attributed, and reviewable. The same standard we hold for human contributions. The anonymity of “system did something” erodes trust. “Claude completed this story, here’s the spec it followed and the walkthrough it produced” builds it.

Seven months

Exponential started seven months ago as a disagreement with a blog post. Yegge’s Beads had the right instinct: git-native, session-surviving, but was built for agents talking to agents.

What exists now: a single Go binary that runs an issue tracker with a CLI, a web board, an MCP server, distributed multi-user support over SSH, a code review and merge workflow, an artifact system, a project timeline, velocity dashboards, and an autonomous agent execution loop. All backed by an append-only event log stored in git. No database, no external services, no infrastructure to manage.

I didn’t set out to build a product engineering platform. I set out to replace a markdown file full of checkboxes. But every honest assessment of what was missing led to the next thing, and the next thing after that, and here we are.

The repos are going public. If you’re building with AI and your issue tracker doesn’t speak agent, you’re leaving half the collaboration on the table.