Stack And Scope
This page answers two questions: what the default technical stack looks like today, and what setup the provider-backed bootstrap path assumes. MVP fit is defined once in Overview.
1. Default Stack Today
| Layer | Default today | Why it is the current default |
|---|---|---|
| app framework | SvelteKit | one framework covers server routes, form actions, SSR, and deployable Node output for the current MVP class, and no replacement evaluation is in scope yet |
| runtime | Node.js on Vercel | the generated bootstrap, CI workflows, and custom-domain flow all target the Vercel CLI and Vercel Git integration today; no replacement has been evaluated |
| database | Postgres on Neon | the generated bootstrap uses neonctl for project and database creation; the credential model and STATE.json linked resource fields are scoped to Neon today |
| Git + CI | GitHub + GitHub Actions | branch flow, PR audit, and post-merge render are encoded there today |
| protected edge | Cloudflare Access | current manual, preview, and operator protection path is already exercised there |
| app authentication | optional project module | product login is not forced by the OS layer; Cloudflare Access is not a replacement for product auth |
Tool roles are not stack layers. The builder, hard auditor, and broad contradiction reader are workflow actors described in Tool Roles.
2. Setup Assumptions
The current bootstrap path assumes:
- a macOS operator machine
ghauthenticated locallynode,jq,rsync, andpython3installedvercelandneonctlinstalled when live provisioning should run- global provider credentials available through the Keychain-backed loader
Required credential surface for the full provider-backed path:
ghsessionVERCEL_TOKENNEON_API_KEYCLOUDFLARE_API_TOKENwhen DNS or Access automation is in scopeANTHROPIC_API_KEYandGEMINI_API_KEYwhen live review steps are in scopeMISTRAL_DEV_API_KEYandMISTRAL_PROD_API_KEYwhen the hosted wiki assistant is in scope
The exact split and storage path live in Credentials And Resumable Bootstrap.
Minimal setup check:
cd /path/to/goingninja-os
./scripts/load-global-providers.sh check
gh auth status
The current implementation is intentionally explicit: changing providers changes the bootstrap script, the template, and the proof surface. It does not silently stay the “same system.”
3. If A Provider Changes
| Change | What must change with it |
|---|---|
| swap runtime host | bootstrap script, deploy docs, proof backlog, vendor-source table |
| swap database provider | bootstrap script, credential model, starter STATE.json, proof backlog |
| swap protected edge | deployment docs, default subdomain rules, credential scope, vendor-source table |
The contract that should survive a provider change is smaller:
- JSON stays machine truth
- Markdown stays rendered view
- builder and reviewer stay separated
- post-merge rendering stays on
main - bootstrap stays resumable
4. Sources
Notes
- Implementation.
goingninja-os/templates/project-repo/STATE.json,goingninja-os/templates/project-repo/PLAN.md, andscripts/load-global-providers.sh.