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
_mediawheredata IS NOT NULL - Writes the file to
./media/{id}{ext} - Sets
_media.data = NULLin the pod (reduces pod file size) - Sets
storage.mode = gitin_meta
What pack does
- Reads each file in
./media/ - Inserts its bytes back as a BLOB in
_media.data - Removes the
storage.modeflag from_meta