Docs

Git sync mode

Extract media BLOBs from the pod to files, commit everything to git, and restore on each build. Lets you use Orbiter with Netlify, Vercel, or GitHub Pages.

The problem

Netlify and Vercel run builds in ephemeral containers — the filesystem doesn't persist between builds. If your pod has media BLOBs, they won't survive a fresh clone.

Git sync mode solves this by keeping media as regular files alongside the pod in your repository.

Commands

# Extract BLOBs from pod to files (run before git commit)
orbiter unpack --pod ./content.pod --media-dir ./media

# Restore BLOBs from files into pod (run at build time)
orbiter pack --pod ./content.pod --media-dir ./media

Workflow

1. Edit content in the Orbiter admin
2. orbiter unpack  →  extracts media to ./media/
3. git add content.pod media/ && git commit && git push
4. CI: orbiter pack → restores BLOBs → astro build → deploy

GitHub Actions

# .github/workflows/build.yml
name: Build & Deploy

on:
  push:
    branches: [main]
  workflow_dispatch:          # ← triggered by Orbiter's build webhook

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: '20' }
      - run: npm install
      - run: npx orbiter pack --pod ./content.pod --media-dir ./media
      - run: npx astro build
      - uses: actions/deploy-pages@v4

Download a ready-made workflow file from Settings → GitHub → ⬇ Workflow in the admin.

Tip: Use Orbiter's build webhook to trigger workflow_dispatch automatically when you publish an entry. No manual git push needed for content-only changes.

What unpack does

  • Reads each row in _media where data IS NOT NULL
  • Writes the file to ./media/{id}{ext}
  • Sets _media.data = NULL in the pod (reduces pod file size)
  • Sets storage.mode = git in _meta

What pack does

  • Reads each file in ./media/
  • Inserts its bytes back as a BLOB in _media.data
  • Removes the storage.mode flag from _meta