Raw Markdown for agents: https://speed.so/docs/agents/Speed-App-Development.md
Speed App Development
What a Speed app looks like as code, and where the conventions for writing one are. This is the page to read when writing or editing the app itself, in your own editor or with your own coding agent. Running the app on your machine and getting the result onto the platform — uploading, previewing, deploying — is covered in Bring Your Own Agent.
What a Speed app is
A Speed app is a React frontend built by rsbuild, a Hono backend on port 3000, and a SQLite database managed with Drizzle. The platform builds it with its own Dockerfile, which relies on a few things staying in place:
- Keep the
buildanddb:applyscripts inpackage.json, and keepspeed-frameworkas itsfile:dependency. Deployment runspnpm run build, and database migrations runpnpm run db:apply. - Keep the database schema in
db/schema.ts. - The server listens on port 3000.
- Persistent files live in
.data/. Everything else in the project directory is rebuilt or replaced on each upload.
Every app starts from the same project template, the startkit. Its
api/_framework.d.ts and src/speed-env.d.ts describe the Speed SDK surface and
must not be modified. speed-framework itself is not part of the source tree: the
startkit image provides it at /tmp/framework, which is where the file:
dependency points once the app runs in the container.
Conventions for the agent
The image ships the coding conventions that the Speed agent itself follows, adapted for an agent working from outside the platform:
/tmp/AGENTS.md— project layout, frontend, backend, database and auth conventions. Read this first./tmp/skills/*.md— one file per platform feature:auth,llm,llm-server,upload,image-generation,in-app-purchases,analytics.AGENTS.mdsays which one to read when./tmp/examples/— reference implementations that the conventions point to.
They live inside the container, not in the app directory, so read them through the running container (started as described in Bring Your Own Agent):
docker exec speed-dev cat /tmp/AGENTS.md
docker exec speed-dev cat /tmp/skills/llm.md
docker exec speed-dev ls /tmp/examples/src
If you want them on disk, docker cp speed-dev:/tmp/examples ./examples copies
the examples next to your app; keep them out of the upload tarball.
Commands that the conventions tell you to run — pnpm add, pnpm run check,
pnpm run db:apply — run inside the container as well:
docker exec speed-dev pnpm run check. Dev server output, including backend
errors, is docker logs speed-dev.