Public site for the Möbius OS organization. Built as a static site; deployed via GitHub Pages.
- Landing page: https://mobius-os.github.io/
- Manifest spec: https://mobius-os.github.io/spec/
- Curated apps: https://mobius-os.github.io/apps/
Landing-page and spec files are hand-edited. The per-app pages
(apps/<id>.html) and the catalog index (apps/index.html) are
auto-regenerated by .github/workflows/build-site.yml, which re-reads
each curated repo's mobius.json. It runs nightly (≤24h to pick up a
manifest change) and on push to main.
To add a new curated app: append its repo slug (e.g. app-notes)
to CURATED_REPOS in build/build_apps.py. Run
python build/build_apps.py locally to preview; the Action will
commit fresh output on the next trigger.
The nightly cron means a manifest edit in an app repo shows up here
within 24h. An app repo that wants its catalog page to refresh
immediately can fire the repository_dispatch: manifest-changed
trigger this workflow already listens for. Add this job to the app
repo's own workflow (it needs a SITE_DISPATCH_TOKEN secret — a
fine-grained PAT with contents: write on mobius-os/mobius-os.github.io,
since a repo's built-in GITHUB_TOKEN can't dispatch across repos):
on:
push:
branches: [main]
paths: ['mobius.json']
jobs:
refresh-site:
runs-on: ubuntu-latest
steps:
- run: |
curl -fsS -X POST \
-H "Authorization: Bearer ${{ secrets.SITE_DISPATCH_TOKEN }}" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/mobius-os/mobius-os.github.io/dispatches \
-d '{"event_type":"manifest-changed"}'Skip this and the nightly cron still catches the change — it's a latency optimization, not a requirement.
See docs/contributing.html for the manifest schema, storage API,
theme tokens, sandbox constraints, and the nav-back protocol — all
the contracts an agent (or human) needs to ship a Möbius app.