Decision memory for coding agents

Every decision has a story. Balladeer keeps it.

Balladeer captures the reasoning behind your code as you build, the question, the options you rejected, and why, then gives it back to your team and your agents exactly when they need it.

Product updates and the occasional note, nothing else. Prefer to talk? Book a demo.

The code was never the hard part. The reasoning was.

Your agents can write the code. What they can't do is remember why your team chose this path and ruled out the three you already rejected, so they rebuild settled work and quietly undo decisions nobody wrote down.

Why Balladeer

Decisions that outlive the session that made them.

01 / Captured

As you build

The moment you and your agent make a call, Balladeer records the decision, the options you rejected, and the rationale. Nobody writes a doc.

02 / Connected

Into a story

Every decision threads to the work it shaped and the decisions around it, upstream and down. The story assembles itself.

03 / Carried forward

To whoever's next

Months later the right decision finds the next person and the next agent, with its certainty and whether anything has changed since.

What Balladeer keeps

You made the call. Balladeer keeps the story.

You and your agent chose webhooks over batch polling. Balladeer logged the decision, the options you rejected, and why. Nobody wrote a doc. Now every agent that touches ingestion reads it first.

DEC-142 Confirmed · recalled 38× this week
Webhooks, not batch polling.
touches ingest-service · connector-sync  |  certainty high
The question
How should we sync data from connected sources?
Why
Polling burned rate limits and shipped stale data. Webhooks deliver on change, in real time.
Rejected
Batch polling every 5 minutes. Simple, but stale and rate-limited.

For agents and the people they work with

One story. Two readers.

Your agents

Build with it.

No redoing settled work.

Your agent checks the relevant decisions before it acts, instead of burning a session on something you'll only rip back out.

ADRs that write themselves.

Every call you make becomes a record, the rejected option and the why included. No doc required.

Your team

Inherit it.

Context that travels.

A teammate's decision reaches you and your agents in real time, with the reasoning attached.

Conflicts caught early.

When your change collides with a call made weeks ago, Balladeer flags it while you're still building, not at review.

How it works

Install once. Balladeer keeps up.

1

Install in one prompt

One prompt adds the Balladeer CLI and connects the agents you already run. No new app, no migration, no surface to babysit.

2

Captured wherever you decide

An agent session, a Slack thread, a doc. Balladeer records the decision and the reasoning, and pushes it to your teammates' agents.

3

Recalled when you build

New work is checked against what's already settled, with the why one keystroke away.

# ~/code/sprig Claude Code v2.1.119 · Opus 4.8 (1M) · balladeer 0.4 (daemon: live · team: 4 online) > balladeer recall "ingest" DEC-142 Webhooks, not polling confirmed · recalled 38× DEC-097 One event substrate confirmed 2 decisions carried into this session.
Works with Claude CodeCursorWindsurfCodexClineZed

Your sessions never leave your machine.

Balladeer distills the decision on your laptop and syncs only that. The raw transcript, your code, and your conversations stay with you. Your team's brain lives in your own tenant, isolated and unreadable to anyone else.

Early access

Give your agents a memory.

Balladeer is onboarding a handful of teams at a time. If your team makes decisions faster than anyone can remember them, we'd like to talk.

Or book a demo and we'll walk you through it.