Apso

The backend foundation for AI-built software

Get the foundation right.

Apso turns your product model into a consistent, scalable backend. You own the generated code, APIs, migrations, and infrastructure.

project-api / generated

02 / .apsorc

source of truth
{
  "version": 2,
  "language": "typescript",
  "entities": [
    { "name": "Workspace" },
    { "name": "Member" },
    { "name": "Project" },
    { "name": "Task" }
  ]
}

Full-stack workflow

Use the frontend stack you know

Use Next.js Server Components and Server Actions as your BFF, or call the generated REST API from a web or mobile client. The TypeScript SDK handles queries and mutations without hiding the HTTP boundary.

Choose a backend model
app/projects/page.tsxSERVER
import { ApsoClientFactory } from '@apso/sdk' const apso = ApsoClientFactory.getClient({  baseURL: process.env.APSO_API_URL!,  apiKey: process.env.APSO_API_KEY!}) export default async function ProjectsPage() {  const projects = await apso.entity('Projects')    .where({ status: { $eq: 'Active' } })    .orderBy({ created_at: 'DESC' })    .findMany()   return <ProjectList projects={projects} />}

Next.js

UI + BFF

Apso SDK

Typed queries

Generated API

Owned service

Built for the whole product team

A backend foundation that keeps people and agents aligned

Backend developers get code they can review and extend. Product teams get a clear model of the system. AI agents get Apso's rules for schemas, access boundaries, extensions, and migrations, plus a repeatable process that produces the same structure across every service.

01

Backend developers stay in control

Inspect predictable NestJS, FastAPI, or Gin code and add product logic without losing it when the schema changes.

02

Product teams can define the system

Turn entities, relationships, and rules into a working API without hand-assembling every backend layer.

03

Lean teams can operate without a dedicated DevOps team

Run locally, deploy through Apso Cloud, or take the generated service to infrastructure your team controls.

regeneration boundaryPROJECT TREE

Generated

Rewritten by Apso

src/autogen/

entities/

controllers/

services/

dto/

migrations/

Owned by your team

Preserved across generation

src/extensions/

billing/

workflows/

webhooks/

reports/

+ your product logic

$ apso generate # custom files preserved

How it works

Turn your coding agent into a backend expert with Apso

Apso gives Claude, Codex, and other coding agents repeatable backend rules, specialized workflows, and project-aware tools. You describe the outcome. The agent designs, generates, and verifies the foundation.

Backend expertise in context

Schema design, access boundaries, extensions, migrations, generation, and verification become part of the agent's working context.

Teach

01

Give your agent backend expertise

Apso gives Claude or Codex repeatable rules for schema design, tenancy, auth, migrations, extensions, and deployment. The agent can apply the right backend pattern without waiting for you to name it.

Expert rules + task skills
Ground

02

Connect it to the real project

The Apso MCP server gives the agent access to the current schema and generation tools. It can inspect, design, validate, and build from what your project actually contains.

inspect → design → validate
Build

03

Ask for the product outcome

Describe the workflow in plain language. Your agent chooses the Apso process, proposes the model, generates the service, and verifies the result before you review the code.

You: "Add team invitations."

Generated foundation

The backend work every application needs

Apso creates the repeated service layers from one schema. The result is a coherent backend in your repository with no required Apso runtime.

Generation01

Repeatable project structure

The schema and CLI version determine the generated entities, controllers, services, and DTOs.

Frameworks02

Familiar framework stacks

Generate NestJS with TypeORM, FastAPI with SQLAlchemy, or Gin with GORM.

Database03

PostgreSQL migrations

Preview schema changes locally and commit language-native migration files with the service.

Access04

Auth and tenant context

Use Better Auth or another JWT provider and carry tenant scope through generated request handling.

Clients05

REST API and TypeScript SDK

Connect through standard HTTP or use the SDK for fluent filters, sorting, pagination, and mutations.

Ownership06

No lock-in. You own the code.

The generated service lives in your repository. Run, test, extend, and deploy it anywhere. Apso is not required in production.

Inspect the output

A backend repository your team can read and change

The generator writes ordinary framework code and keeps custom application logic in a separate directory. Review the files, run the tests, and use the same deployment tools you use for other services.

Explore generated code
generated serviceREADY

project-api/

.apsorc

src/

autogen/

Project/

Task/

extensions/

migrations/

test/

docker-compose.yml

Data layer

  • ORM models
  • relationships
  • constraints
  • migrations

API layer

  • REST controllers
  • validation DTOs
  • filters
  • OpenAPI

Application layer

  • services
  • auth guards
  • tenant context
  • extension hooks

Operations

  • local database
  • tests
  • Docker
  • deployment config

Build on a foundation you own

Give your product a backend that can grow with it

Start in the service builder or connect Apso to Claude or Codex. Apso teaches your agent the backend conventions, gives it the project tools, and keeps the generated service consistent as it grows.