v0.1.0 — now on npm

Your entire CMS
in one file.

Content, media, schema, users — all in a single .pod file. Copy it anywhere. No database server. No cloud account. Built for Astro.

GitHub → How it works Support Orbiter ☕
$ npm install @a83/orbiter-integration

See it in action

A full CMS admin — injected into your Astro app. No separate service to run.

Orbiter Dashboard
Dashboard — 21 entries across 6 collections, recently changed, live/draft status

How it works

Your entire CMS lives next to your source code — in one file.

your-site/
├── astro.config.mjs
├── content.pod   ← your entire CMS
└── src/pages/
Step 1 — Install
npm install @a83/orbiter-integration
Step 2 — Add to astro.config.mjs
import orbiter from '@a83/orbiter-integration';

export default defineConfig({
  output: 'server',
  integrations: [orbiter({ pod: './content.pod' })],
});
Step 3 — Read content
import { getCollection } from 'orbiter:collections';

const posts = await getCollection('posts');

What's included

A full CMS admin at /orbiter — injected into your Astro app, nothing added to src/pages.

One file. Everything.
Content, media, schema, users, sessions — all in a single .pod file. Copy it anywhere. Back it up with cp.
Astro-native
One line in astro.config.mjs injects a full admin UI at /orbiter via injectRoute. Nothing added to src/pages.
Familiar content API
Read content with getCollection and getEntry — same shape as Astro's built-in content collections.
Schema editor
Add or change fields in the admin without writing migrations. Changes apply immediately.
Media library
Images and files stored as BLOBs directly in the pod. No CDN to configure, no broken paths after deploy.
Version history
Every publish creates a snapshot. Roll back to any previous version of any entry.
JSON API
GET /orbiter/api/[collection] — optional Bearer token, ready to use from any frontend.
GitHub sync
On serverless platforms like Netlify and Vercel, pack your pod into a git commit and trigger a rebuild. No data loss between deploys.
Import
Migrate from WordPress (WXR export) or bring in Markdown files. Done in the admin, no CLI needed.

Honest tradeoffs

Orbiter is the right tool for small teams and content sites. Here's where it isn't.

Not for large media libraries
SQLite BLOB storage is convenient for content sites but not for thousands of high-res images. If your media library is in the gigabytes, this isn't the right tool.
Serverless requires extra steps
Netlify and Vercel don't persist filesystem writes between deploys. The GitHub sync mode works around this, but it adds steps. A VPS or Coolify gives you a better experience.
Built for small teams
Two people editing the same entry at the same moment will get last-write-wins. Fine for a team of 1–5. Not designed for large editorial teams working in parallel.

Try it in 60 seconds.

Clone the repo and run the demo — admin at localhost:8080/orbiter, login: admin / admin.

git clone https://github.com/aeon022/orbiter.git
cd orbiter && npm install && npm run seed && npm run dev
or scaffold a new project: npm install -g @a83/orbiter-cliorbiter init my-site
Like what you see?
Orbiter is free and open source. If it saves you time, consider supporting its development.
Support Orbiter ☕
Built by
Abteilung83

Advanced Web Architecture & Digital Systems Engineering — Less Noise. Nice Data. No Bloat.

abteilung83.at →
./ab83_init --status
hash: 9f065593155d42fb78f6c1d02e72df1b3be6def9
build: 14.04.26, 16:47