Every idea starts with a spark

Tell your agent:

$ read and follow https://github.com/hazat/manifest/blob/main/SPARK.md copy
scroll
visitor@manifest:~$ cat welcome.md

What if the framework
was
built for the agent?

Every framework that exists was built by humans, for humans.

But more and more, agents are the ones writing the code.

What would it look like to design for that?

~/manifest $ cat README.md

What is Manifest

A TypeScript backend framework that runs on Bun. Routing, validation, auth, rate limiting, error handling, streaming — the things you need to build an API. About 1,400 lines of source code total.

The difference: the entire framework ships as source code inside your project. Not an npm package — actual .ts files your agent can read, understand, and modify. Every behavior is defined in a single file. No hidden middleware, no decorators, no magic. An agent reads one feature file and knows exactly what it does.

// features/UserRegistration.ts — one file, complete behavior
export default defineFeature({
name: 'user-registration',
route: ['POST', '/api/users'],
authentication: 'none',
sideEffects: ['Inserts row into users table'],
errorCases: ['409 — Email already taken'],
input: {
email: t.string({ description: 'User email' }),
password: t.string({ description: 'Password' }),
},
async handle({ input, ok, fail }) {
// All logic here. No hidden layers.
return ok('User created', { status: 201 })
}
})

Route, inputs, auth, side effects, error cases, logic — all in one place. Your agent reads this and knows what to build on, what to test, and what might break.

~/manifest $ ls manifest/

What you get

A complete foundation for building APIs — all as readable source code in your project.

Routing & validation Path params, typed inputs, automatic error responses
Authentication Declare per-feature: required, optional, or none
Rate limiting Sliding window per IP, declared in the feature file
SSE streaming Stream features with emit(), named events, auto-close
Error envelopes Consistent JSON responses with trace IDs
Testing Call features by name, no HTTP required
Agent skills Commits, updates, conflict resolution — structured workflows, not scripts
Extensions Blog, database, frontend presets — drop in and go
Docker docker compose up --build, no config needed

No dependencies to install. No docs to cross-reference. Your agent reads manifest/ once and understands the whole framework.

~/ $ cat GETTING_STARTED.md

How to start

Copy and paste the prompt into your agent to get started.

$ read and follow https://github.com/hazat/manifest/blob/main/SPARK.md copy

Describe what you want to build. Spark handles the rest — cloning, setup, getting the server running.

// you say: "a recipe app for meal planning"
cloning manifest into meal-planner/... done
installing dependencies... done
writing VISION.md... done
bun --hot index.ts server running on :8080

The framework source code is now in your project at manifest/. Your features go in features/. Your agent already knows the conventions — it read them.

When you're ready to deploy, docker compose up --build works out of the box. No build pipeline to configure, no platform lock-in.

Your code. Your repo. Your infrastructure. Nothing opaque between you and what's running.

~/manifest $ spark --status

Meet Spark

If your agent can read and build the code — can it also watch it run?

Spark is a sidekick agent that runs alongside your application during development. When something breaks — an error, a crash, an unhandled exception — Spark sees it with full context: the stack trace, the feature file, the request that caused it. It reads the code, diagnoses the issue, and fixes it — often before you even switch tabs.

// spark — watching your dev server
▸ environment: development
▸ watching: your running app
▸ error: 500 in user-registration — null displayName
▸ reading: features/UserRegistration.ts
▸ fix: added null check on line 34 · hot-reloaded
▸ next request: 200 OK

Every request gets a JSON envelope with a trace ID. Every error becomes a structured event. Always inspectable — by you, by the agent, by anything.

You control what Spark does:
development full access, fixes issues as they happen
production same tools, but acts with extreme care — smallest surgical fix only

This is the most experimental part of Manifest. It works remarkably well for some things. For others, it's still early. That's kind of the point.

agent skills — your codebase, understood

Your agent doesn't just write code — it operates the framework

Manifest comes with skills — structured workflows your agent loads and follows. Say what you want, and the agent handles the execution.

add a login feature with email and password
loading skill: manifest-feature
reading AGENTS.md... understood conventions
scaffolding features/Login.ts... route, input, auth
writing tests/Login.test.ts... 3 cases
running bun test... all passing

The agent reads the project conventions, scaffolds the feature following the patterns, writes tests, and verifies everything passes.

Because the framework is source code in your repo, the agent can also keep it up to date. When the upstream Manifest project improves, say "update from upstream" and the agent fetches changes, reads every commit, and walks you through what to pick — you decide what enters your app.

Features, commits, updates, conflict resolution — these are agent skills, not shell scripts. The agent handles the workflow. You handle the decisions.

~/manifest $ cat VISION.md

The code is theirs. The vision is yours.

However far agents go — writing code, monitoring systems, fixing what breaks — one thing doesn't change.

You decide what gets built.

The tools shift. The decisions don't. What matters, what ships, what it looks like, how it feels — those are still yours.

Manifest is one way to explore that relationship. The agent handles more of the how. You own the what and the why.

What you make of it is up to you.

~/manifest $ try
$ read and follow https://github.com/hazat/manifest/blob/main/SPARK.md copy

Open source. MIT license. Ship something.