Plans before deploys
Every deploy shows what it creates, changes or removes. Destructive changes wait for an explicit flag.
Developers
One command connects a git workspace to your tenant. Build apps in React and TypeScript, keep the tenant's configuration in files, deploy with plans and roll back in one step: by hand, or with your AI assistant.
❯
Workspace
Apps and the tenant's configuration live side by side in git, reviewed together and promoted together. Changes people make in the UI arrive in the repository as commits by the people who made them.
acme/├── jetstack.json # the environments, apps and configuration├── AGENTS.md # the guide for AI assistants├── CLAUDE.md # includes AGENTS.md for Claude Code├── apps/│ ├── crm/ # jetstack.app.json · server/ · src/│ ├── portal/│ └── website/└── tenant/ # data model, roles, permissions, automations…
CLI
A standalone binary for macOS, Linux and Windows, served by your tenant, verified by checksum and kept current with self-update. Nothing else to install.
Start
jetstack connectLink a folder to the tenant's environments
jetstack loginBrowser sign-in, two-factor included
jetstack doctorNames the fix for whatever doesn't work
Build
jetstack app newScaffold an app: a type, a menu item, handlers, a page
jetstack devRun an app from your computer against development
jetstack draftWork on the shared draft, next to the Studio
Ship
jetstack deployBuild, plan and deploy to development
jetstack promoteTake tested releases and configuration to production
jetstack rollbackBack to the previous release
Operate
jetstack logsErrors and handler logs, followed live
jetstack historyEvery change, to compare and restore
jetstack testCheck what each role may see and do
Code
The browser SDK knows who is signed in and works with records under their permissions. Handlers publish live events to the people who need them. Record-level rules live in the manifest, not in your code.
1import { records } from "@jetstack/sdk";23const cases = records("case");4const { items, total } = await cases.list({5 filters: [{ property: "status", type: "is", param: "open" }],6 orderBy: "created_on", orderDir: "desc", perPage: 20,7});89const created = await cases.create({ title: "New case", priority: "high" });10await cases.patch(created.id, { status: "closed" });
The stack
Studio apps are React and TypeScript with Tailwind CSS and shadcn/ui, built from an app kit with routing, forms, dates, charts, tables, toasts and animation. Build on your own computer and any package is yours to use.
Ship safely
Every deploy shows what it creates, changes or removes. Destructive changes wait for an explicit flag.
Require a second person for deploys. CI uses tokens that can deploy and nothing else.
jetstack test runs throwaway users through what each role may see and do, locally or in CI.
Compare any two states and restore one, from the UI or the CLI.
For AI assistants
An assistant opened in the workspace reads AGENTS.md: what is where, which rules hold, which commands to use. It reads the docs through the CLI, uses your tenant's tools over MCP and follows step-by-step skills for the common jobs.
Add an app for tracking support tickets, visible to each customer's own staff only.
APIs & runtimes
The same operations for scripts, integrations and AI clients.
Record events delivered to apps reliably, with retries.
Serve an app's routes from your own HTTP service behind the platform's gateway, where the hosting offers it.
Let the platform build and run a PHP service from the app's bundle, where the hosting offers it.
Documentation
Get started
Tell us about your project and your stack. We'll set you up with a tenant and walk your team through the workspace.