Get started with Tetra
Auth, database security and a toolchain that checks your work — before you write your first route. Free for a single developer.
Ask for a licence
Tell us your GitHub account and what you are building. Your licence gives that account read access to the packages and comes with a signed key for production. Building on your own is free, so there is nothing to pay and no card to enter.
Request a licencePoint npm at the right registry
# .npmrc
@soulbatical:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}
# The token is one you create yourself, with scope read:packages.
export NPM_TOKEN=ghp_…We never see that token. It stays on your machine and in your own deployment environment.
Install and start building
npm install @soulbatical/tetra-core
# Optional: the component library
npm install @soulbatical/tetra-uiNode 24 or newer. Put the signed licence key in TETRA_LICENSE_KEY on your server — keep it server-side, because anything exposed to the browser is readable by every visitor.
What you get on day one
This is the foundation, not a tutorial. It is here so you can see what you no longer have to build yourself.
An application with security defaults
import { createApp } from '@soulbatical/tetra-core';
const app = createApp({
name: 'my-app',
supabaseUrl: process.env.SUPABASE_URL!,
supabaseAnonKey: process.env.SUPABASE_ANON_KEY!,
supabaseServiceKey: process.env.SUPABASE_SERVICE_ROLE_KEY!,
});CORS, CSP, rate limiting, security headers and the database client hierarchy — configured, not left to you.
Accounts and sessions
import { addPublicAuthRoutes } from '@soulbatical/tetra-core/auth';
// POST /auth/login, /auth/signup, /auth/logout,
// /auth/refresh, /auth/magic-link, /auth/oauth/:provider
addPublicAuthRoutes(app);Your own features
import { addQueryRoutes, addMutationRoutes }
from '@soulbatical/tetra-core';
const config = {
tableName: 'orders',
organizationIdField: 'organization_id',
filters: [
{ key: 'status', type: 'enum', options: ['pending', 'paid', 'shipped'] },
{ key: 'search', type: 'search', columns: ['customer_name', 'email'] },
],
};
addQueryRoutes(app, '/api/orders', config);
addMutationRoutes(app, '/api/orders', config);Filtering, pagination and search from one description, with row level security applied per organization.
Checks you can run any time
npx tetra-check-rls # row level security policies
npx tetra-migration-lint # migration safety
npx tetra-toolchain-check # project configuration
npx tetra-test-governance # test coverage contractsDeployment
Tetra runs on any Node.js host. Node 24 or newer is required.
FROM node:24-slim
COPY . .
RUN npm ci
CMD ["node", "dist/index.js"]Next: the same thing in one command
The steps above are the registry, the token and the licence — three pieces of bookkeeping before you write any code. We are replacing them with a single command that confirms who you are in your browser and configures the project for you.
npx create-tetra my-appNot open yet. The name is reserved and the published package deliberately refuses to run, so do not reach for it today — step 1 above is how you start. Ask for a licence and we will tell you the day it opens.
Free for one developer
Building on your own costs nothing, for as long as you like. Pricing starts when a second person joins your organization, and moves in steps you can read off the table rather than a per-seat sum.