Penling penguin markPenling
How Penling works

From goal to merged PR — with the reasoning intact.

The hard part of building software was never writing the code — it was agreeing on what to build. Now that AI writes most of it, that's only clearer. The bottleneck has moved from execution to alignment.

Penling structures that alignment: work arrives, it gets defined, the definition becomes a plan a human approves, and the plan becomes a build a human steers. Here's every stage, and why it exists.

01
Define the goal
A named milestone for the project.
· Human
02
Spec the focus area
Definition, expected results, conditions, boundaries.
· Human
03
Generate a plan
LLM generates a step-by-step implementation strategy.
· AI + Human
04
Build via MCP
Agent picks up the plan and starts committing code.
· AI + Human
05
Ship the PR
A PR traced to its spec, every contributor named.
· AI + Human
STEP 01 + 02 · SPEC

Goals get broken into focus areas. Focus areas are the spec.

This stage exists because an agent without a contract is just guessing. A focus area gives the agent exact edges: what to build, what a good result looks like, which constraints apply, and where to stop.

Every build that follows inherits this contract. The agent can't start without it — and neither can the reviewer who reads the PR.

  • Definition — what you're building, in plain English.
  • Expected results — numbered, testable, no vagueness.
  • Conditions — the environment and constraints the agent must satisfy.
  • Boundaries — what's explicitly out of scope, before the agent starts.
Real working ToDo AppGoalsBasic UIFocus area
In progressFA-014· 2 OF 4 CHECKS VERIFIED

Create the basic framework with a heading, text input, and Add ToDo button

Definition

A focused HTML page with the minimum scaffolding for editing todos. No routing framework required - just the visible surface.

Expected results
01 ·Page renders a heading Paul's Todo App
02 ·Input has placeholder Add a todo…
03 ·Button carries the label Add ToDo
04 ·All tests pass in tests/page.unit.test.js
Conditions

Run without a server runtime. All files are static HTML. All tests in tests/page.unit.test.js must pass before this build can close.

Boundaries

Do not add routing or a multi-page framework.

Do not implement submission logic beyond a styled form element.

Do not change the page title from Paul's Todo App.

STEP 03 · PLAN

An LLM proposes an implementation plan. You shape it before it ships.

The AI drafts a step-by-step strategy from the focus area. It doesn't guess — it derives from the spec: what to build, what order to do it in, what to check along the way.

This is the moment a human asserts control over what the AI will do. Before any code is written, you decide the shape of the build. When you publish, the plan becomes the agent's mandate — and the agent can't start without it.

  • Human edits are tracked and shown in the plan history.
  • Multiple plans can be drafted - only the published one runs.
  • Plan version is locked to the build that executes it.
FA-014PlansPlan v3 · draft
DraftPlan v3· GENERATED 8 MIN AGO · 2 HUMAN EDITS

Implementation plan

01
Insert <!DOCTYPE html> with <head>, <body>, and <h1>Paul's Todo App</h1>
AI
02
Add styled text input with maxlength=25 and placeholder attributeEdited · set maxlength cap
AI + Paul
03
Add <button>Add ToDo</button> with type="submit"
AI
04
Add aria-label attributes to pass accessibility checks
AI
05
Run tests/page.unit.test.js and confirm all assertions passEdited · added test gate
AI + Paul
06
Confirm all 4 checks resolve and close the build
AI
Publishing notifies your MCP agents
STEP 04 · BUILD

Any MCP-compatible agent picks up the plan and starts building.

This stage exists because the agent shouldn't choose what it builds — only how to build what the plan says. Penling is the source of truth; the agent is the executor.

Bring Claude Code, Cursor, VS Code, or your own agent framework — Penling speaks MCP, so your tools connect without a wrapper or lock-in. The agent claims the build, streams progress back, and asks a human when it needs a decision.

  • One Penling server, any MCP-compatible agent.
  • Builds run in your runtime — your machine, your cloud.
  • Clarifications pause the agent until a human responds.
Agent compatibilityvia MCP
Claude Codeconnects
Cursorconnects
VS Code (Copilot)connects
Any MCP-compatible agentconnects
STEP 05 · OBSERVE

Every move the agent makes streams back to Penling.

This stage exists so a build is never a black box. As the agent works, Penling receives every event: commits, test runs, check resolutions, clarifications, PR opens. Everything timestamped, everything attributed.

Subscribe and you can watch a build evolve in real time — in Penling, in Slack, in Datadog, in your own dashboard. The full event history is replayable from any point.

  • Webhooks for every event type.
  • Streaming subscriptions via Server-Sent Events.
  • Replayable history — scrub from any point in the build.
Build #1 · live event stream
Penling API · /builds/19/events
Live build telemetry
Streaming
07:29:14build.completebuild_id=19 checks=19/19 pr=4
07:28:51pr.openedpr=4 branch=feat/rwta-2-landing-page
07:28:44check.verifiedcheck=4 fa=FA-014 evidence=tests/page.unit.test.js
07:27:30commit.pushedcommit=4c39b82 files=3 agent=claude-4
07:25:12check.verifiedcheck=3 fa=FA-014 evidence=audit/aria.json
07:24:08clarif.resolvedclarif=2 by=paul duration=24m
07:21:44check.verifiedcheck=2 fa=FA-014 evidence=screenshot.png
07:19:33clarif.openedclarif=2 agent=claude-4 fa=FA-014
07:17:09commit.pushedcommit=a1f2c34 files=2 agent=claude-4
07:16:22build.claimedagent=claude-4 plan=v3 fa=FA-014
STEP 06 · SHIP

A PR opens, traced to its spec, with every contributor named.

When the build closes, Penling opens a PR with the full reasoning attached. Every check traces to a file. Every commit traces to a human or an AI. The reviewer sees the spec, the plan, and the build record — all in one place.

MergedPR #4github.com/example/todo-app
RWTA-2: build landing page HTML
⎇ feat/rwta-2-landing-page
4c39b82fix: set maxlength on input per Paul's edit
AI
a1f2c34feat: add aria-label attributes for accessibility
AI
9e3d211feat: add todo button and input scaffolding
AI
0b87cc1chore: init page with heading structure
PJ
Tests19 / 19
Checks4 / 4
Planv3
PenlingBuild #1
Build #1 · evidence
19 / 19 passing· EVIDENCE LOCKED · COMMIT 4c39b82

Verification snapshot

CheckEvidence
Page renders heading elementtests/page.unit.test.js:12
Input field accepts text entrytests/page.unit.test.js:28
Add ToDo button present and labelledtests/page.unit.test.js:44
Accessibility audit passesaudit/aria.json
What you get

One workflow. End-to-end documented.

4-part

Spec per focus area

Definition, results, conditions, and boundaries - every time.

Plans per spec

Draft as many as you need. Only the published one runs.

MCP

Native agent runtime

Any MCP-compatible agent. No wrapper, no lock-in.

100%

Available

Every event streams. Every build is replayable from any point.

Ready to ship with structure?

Define your goal, spec the focus areas, connect your agent, and watch a pull request land — with the full reasoning intact.

Start free trialSee the full capability list