Appstrate
[Developer Platform]

Extend Appstrate like you extend Kubernetes.

Modules declare routes, schemas, hooks, and permissions. Load via MODULES env var. Zero footprint when absent.

[01 · Why it matters]

A platform that can't be extended is a closed product with a Docs page.

Real platforms evolve. You need custom routes, custom logic, custom tables — without forking.

Appstrate ships a formal module contract. Modules own their DB tables, their routes, their hooks. Core knows nothing about them. Removing a module is removing a directory.


[02 · How it works]

Declare. Load. Done.

A module exports an AppstrateModule default. The loader discovers built-ins, resolves npm packages, topologically sorts by dependencies.

In practice

Every piece of Appstrate is a declared, versioned artifact — the agent, its tools, its skills, its provider connections. You describe them once; the platform handles packaging, dependencies, isolation, and execution.

Each section below goes deeper on what that means for extend appstrate like you extend kubernetes.

View the full example in the docs →

[03 · Deep dive]

What makes it work.

📦

Own your tables

Drizzle migrations, per-module tracking table. Forward references only.

🪝

Hooks + events

beforeRun, afterRun, onRunStatusChange. Gates + broadcasts.

🔒

Declare permissions

Extend the RBAC matrix in the same PR.

🏷️

Feature flags

UI gates on module presence. Disable = zero footprint.


Build on Appstrate without forking.

Full authoring guide in /docs. Published modules load via npm specifier.