The full-stack framework where the primary developer is an AI agent.
Live demo · Wiki · Error codes · CLI reference · llms.txt
If you are a coding agent, start with
llms.txt: every doc, wiki page and package README as one link map.
Rails' philosophy on Bun + Postgres + SolidJS. Everything is one of eight primitives, and one action declaration projects into an HTTP route, an OpenAPI operation, a typed client, a job handle, an MCP tool and a test, all behind one policy. x verify is the contract: green means shippable.
This is a real action from the reference app, quoted by scripts/readme-sample.ts, which fails the gate when the two differ:
import { action, t } from '@ultimat3/action';
import { canRunAct } from '../policy';
export const cancelRun = action({
input: t.object({ orgId: t.uuid, runId: t.uuid }),
output: t.object({ runId: t.uuid }),
policy: canRunAct,
row: ({ input, ctx }) => ctx.runs.runOwner(input.runId),
mcp: { expose: true, description: 'Cancel a run that is queued or in flight' },
async handle({ input, ctx }) {
await ctx.runs.cancel(input.runId);
return { runId: input.runId };
},
});POST /api/runs/cancel, its OpenAPI operation, api.cancelRun(...) in the browser, the cancelRun MCP tool and a job-callable handle all come from those lines, and the same canRunAct decides every one. A typo in a caller is a compile error.
bunx create-ultimate myapp && cd myapp && bun run setup && bun run devOr look first: the live demo, a social network built on Ultimate, deployed from main on every green push. Fabricated data, every row decided by a policy. Source: dummy/social-media-clone/.
No Docker, no env hunt: embedded Postgres, in-process NATS, storage in a local directory, a seeded database and a dev dashboard at /_x. bun run setup is required: x new installs nothing, and the app's own README names the six steps. → Getting started
| Pick it when | Because |
|---|---|
| an agent writes most of your code | one way per task, --json everywhere, and every error carries a stable code, a cause and a fix: command |
| you want authz written once | the same policy guards HTTP, live queries, jobs, MCP tools and admin |
| you want the boring parts decided | jobs, realtime, auth, mail, storage, i18n, SEO, admin and MCP ship in the box, each gated |
| the app may grow | the same app code from one PaaS process to Kubernetes (scale ladder) |
| Do not pick it when | Why |
|---|---|
| you need Node.js or Deno | Bun only, by design |
| your database is not Postgres | Postgres only |
| your UI is React, Vue or Svelte | SolidJS only |
| you deploy to Vercel functions, Lambda or Workers | containers only: zero platform primitives |
| you want plugins | there is no plugin API: an app wraps a primitive instead |
| you need multi-node realtime proven today | measured on one node only; see Known gaps |
The first five are the maintainer's committed non_goals (.dz/maintainer/maintainer.yml); a request against one is declined with the axiom quoted.
A number written into a file goes stale on the next commit; the command does not. Run the right-hand column.
| Claim | Check it yourself |
|---|---|
x new writes 220 files you never edit (187 with --no-example), asks 0 questions |
bun run scripts/generator-counts.ts --json |
| the gate's steps, in order, each with a verdict | bun run x -- verify --json |
| a fresh scaffold is green on its first gate run, every push | the scaffold-smoke job in ci.yml |
a rolling restart on Kubernetes drops no request (0 of 9,028, As of 2026-09-24) |
the deploy-proof job in ci.yml, docker/deploy-proof/run.sh |
| what npm serves; every package is there, attested | npm view @ultimat3/core version · bun run scripts/registry-audit.ts --json |
| realtime recovery on one node, from a forced restart | scripts/bench/results/README.md, held to the committed runs by scripts/bench-claims.ts |
every X_* code, its owner and its fix |
bun run x -- errors explain <CODE> --json |
In use: the live demo, built from dummy/social-media-clone/ and deployed on every push to main (deploy-social-demo.yml). Two apps in this tree build on it and gate on every push: the demo and the reference app examples/dummy/ (scripts/lib/gated-apps.ts). No production use and no outside adopter is claimed.
What those numbers do not say:
| Not claimed | Why |
|---|---|
| that a green gate guarantees feature completeness | the gate asserts what its steps check, no more (scripts/lib/gated-apps.ts) |
| that few lines means many features | the demo's DOMAIN.md is partly a plan: likes and comments have no write path |
| that live messaging works in the demo | its live query and channel are declared and tested, and no island subscribes to either |
Not a mock-up: built in packages/db/src/errors.ts, the same in the terminal, the browser overlay and --json.
X_DB_DRIFT: schema differs from migrations
cause: table "posts" has column "publish_at" not present in any migration
fix: x db gen "add publish_at"
A fix: naming no command, call or file fails the gate's errors step. A shipped code never changes meaning. → Every code
entity · policy · action · mutator · query · job · route · task. A feature that fits none of them does not ship, and a new capability is a factory over one (llm() returns an action, backfill() a job). → The eight primitives · the spec
Packages are tiered and imports only go down, a build error otherwise: scripts/lib/tiers.ts, bun run boundaries. Every package and its job: bun run scripts/list-workspaces.ts --json, or the package map.
| You want | Go |
|---|---|
| the reference manual | wiki/ · browsable |
| whether it fits a project this size | docs/idea/21-the-range.md |
| what is broken and known | wiki/Known-Gaps.md |
| idiomatic usage, every primitive once | examples/dummy/ |
| why a decision was made · how it is built · running it | docs/idea/ · docs/architecture/ · docs/ops/ |
| how much code you do not write, measured | docs/idea/21-the-range.md · dummy/social-media-clone/ |
| what changed · what breaks · how it is released | CHANGELOG.md · wiki/Upgrading.md · PUBLISHING.md |
Semver, with the window, the cadence and the date of the next major in Stability. What each major breaks, and the edit it takes: Upgrading.
Ultimate is maintained by AI, by developerz.ai: issues are triaged, pull requests reviewed and driven to green, releases cut by the bot under a committed policy (.dz/maintainer/maintainer.yml). Who decides what, and how to reach a person: GOVERNANCE.md.
bun install && bun run verify (the gate; green = shippable), then CONTRIBUTING.md and adding a feature. Conduct: CODE_OF_CONDUCT.md.
MIT © developerz.ai