SHIP CODE
WITH AN AUTONOMOUS
ENGINEER.
Forge accepts a task, plans the work, writes and edits code, runs your tests, and opens a pull request. Every step observable in real time. No black box.
- Explore repository
- Read auth/session.ts
- Edit login route
- 4Add regression test
- 5Run test suite
- 6Commit & open PR
Most AI coding demos run in a notebook with hardcoded prompts. Or they need a Kubernetes cluster before they'll say hello. Forge is the middle path.
A production-quality Next.js app that demonstrates the full Devin-style workflow — task intake, planning, step-by-step execution with live terminal output, file diffs, and a pull request. Honest about what can and cannot run on Vercel's free tier.
EVERYTHING AN
AUTONOMOUS ENGINEER
NEEDS.
Agentic planning
Every task is decomposed into an ordered, observable plan. The agent reasons about each step before touching a file. Assumptions and risks are surfaced upfront — never hidden inside a black box.
Code generation & editing
Reads, writes, and edits files with surgical search-and-replace. Real diffs stream into the UI as they happen. You see every addition, deletion, and context line exactly as a reviewer would.
Live terminal & logs
Watch every shell command, test run, and git operation stream in real time. Filterable log levels, syntax-highlighted output. The terminal auto-scrolls so you're always on the latest line.
GitHub-native workflow
Connects to your repositories, creates feature branches, commits with conventional messages, and opens pull requests with full context for reviewers. Typed REST v3 wrapper — no raw API leaks.
Claude-first, pluggable models
Anthropic Claude is the primary reasoning engine with extended thinking support. A clean provider abstraction means you can swap in any LLM — including a sandbox-friendly default.
Cloud-safe by design
Mutating tools are simulated on Vercel's read-only runtime and executed for real in a local worker. The same UI works in both modes — no broken demos, no if-statements in components.
FROM PROMPT
TO PULL REQUEST.
Four observable stages. No magic, no hidden state.
Describe the task
Tell Forge what you want in plain English. Pick a repository, a branch, and a model. The orchestrator takes it from there. No prompt engineering required.
Watch the plan form
The planner decomposes your task into five to nine ordered steps with explicit tool calls. You see assumptions and risks before any code is written. Cancel here if it looks wrong.
Follow execution live
Terminal output, file diffs, and a step timeline stream in real time. Filterable log levels, syntax-highlighted diffs, auto-scrolling terminal. Cancel anytime.
Review the pull request
Forge commits with conventional messages and opens a pull request with a full summary, root-cause analysis, and testing steps. You review, merge, ship.
CLEAN LAYERS,
NOT A BLACK BOX.
Forge is built like a real product, not a notebook. Each layer has a single responsibility and a typed contract.
Orchestrator
Holds the task state machine. Sequences planner → executor → reviewer.
Planner
Asks the LLM to decompose the task into ordered, typed steps with tool bindings.
Executor
Walks the plan one step at a time. Invokes tools, streams events, captures diffs.
Runtime
Abstracts where tools run — local worker, cloud serverless, or demo mode.
Tools
12 typed tool definitions: read_file, edit_file, run_command, git_commit, open_pr.
GitHub layer
REST v3 client for repos, branches, commits, and pull requests. Typed responses.
REAL COMMANDS.
REAL CODE.
The agent's planner is a typed function with a clean fallback — exactly the kind of code you'd want in production.
// Decompose a task into an ordered, typed plan.
export async function planTask(
input: PlannerInput
): Promise<PlannerResult> {
if (input.useLlm) {
try {
const provider = getCachedProvider();
const res = await provider.complete({
messages: [
{ role: "system", content: PLANNER_SYSTEM_PROMPT },
{ role: "user", content: input.description },
],
model: provider.models[0]?.id,
});
const plan = parseLlmPlan(res.content, input.taskId);
if (plan) return { plan, source: "llm" };
} catch {
// fall through to scenario planning
}
}
return { plan: scenarioPlan(input), source: "scenario" };
}SHIP YOUR NEXT PR
WITH AN AI PAIR ENGINEER.
Launch the app, describe a task, and watch Forge plan, code, test, and open a pull request — all in real time.