Quick Start
Install the Neutrino CLI, create a project, run it locally, and deploy to Cloudflare in under 10 minutes.
Quick Start
This guide gets you from zero to a running Neutrino platform console in under 10 minutes. By the end you will have a local dev server connected to Neutrino's backend and a deployment on Cloudflare Pages.
Prerequisites
Before you start, make sure you have the following:
- Node.js 20+ — check with
node --version - pnpm 10+ — install via
npm install -g pnpmif needed - A Cloudflare account — free tier works for development
- Wrangler CLI —
npm install -g wrangler, thenwrangler login - A GitHub Personal Access Token (PAT) with
read:packagesscope — required to install@neutrino-io/*packages from GitHub Packages
Configure package registry access
@neutrino-io/* packages are hosted on GitHub Packages. Export your PAT before installing:
export GITHUB_TOKEN=ghp_YOUR_TOKENAdd this to your shell profile (~/.zshrc or ~/.bashrc) to persist it across sessions.
Your project's .npmrc (included in the starter) points the @neutrino-io scope at npm.pkg.github.com and reads ${GITHUB_TOKEN} automatically. Do not hardcode your token in .npmrc.
Step 1 — Install the Neutrino CLI
pnpm add -g @neutrino-io/cliVerify the install:
nno --versionThe CLI provides five namespaces: nno project (local dev and deployment), nno feature (feature scaffolding), nno doctor (environment diagnostics), nno setup (platform provisioning wizard), and nno platform (platform management).
Step 2 — Log in
nno loginThis opens a browser window to authenticate with Neutrino. After completing the flow your credentials are stored locally and all subsequent nno commands are authenticated.
To check who you are logged in as at any time:
nno whoamiStep 3 — Create a project
Create a directory for your project and run the nno setup wizard:
mkdir my-app && cd my-app
nno setupThe interactive wizard:
- Authenticates your session (if not already logged in)
- Registers a new Platform in the Neutrino Registry and returns your
PLATFORM_ID - Provisions the required Cloudflare resources for your platform
- Writes a
.env.localwithVITE_GATEWAY_URL,VITE_AUTH_URL, andVITE_PLATFORM_IDpopulated for your new platform
After the wizard completes, install dependencies:
pnpm installPlanned: A
nno project initcommand and a starter template repo (nno-stack-starter) that scaffolds the full project structure in one step are tracked as future feature work.
Step 4 — Start dev
pnpm devThe console shell starts at http://localhost:5173.
What happens at startup:
- Vite runs the
neutrino-feature-discoveryplugin, which scans yourpackage.jsonfor all@neutrino-io/feature-*dependencies and generates thevirtual:feature-registrymodule. - The shell boots and loads enabled features from
features.config.ts. Routes and sidebar entries are built statically — no network round-trips at startup. - The Neutrino authentication screen appears. Sign in with your Neutrino credentials.
If no sidebar items appear after sign-in, check that at least one feature has enabled: true in src/config/features.overrides.ts:
// src/config/features.overrides.ts
export const featureOverrides = {
settings: {
enabled: true,
},
};Restart pnpm dev after changing this file.
Step 5 — Deploy
When you are ready to ship, deploy to Cloudflare Pages:
nno project deploy <platform-id>Replace <platform-id> with the 10-character platform ID assigned during nno setup (also stored in .env.local as VITE_PLATFORM_ID).
This command triggers a CI build via GitHub Actions, which runs pnpm build and then wrangler pages deploy. The first build takes 2–3 minutes.
Before deploying for the first time, add the following to your Cloudflare Pages project's environment variables (Settings → Environment variables):
| Variable | Value |
|---|---|
VITE_GATEWAY_URL | https://gateway.svc.nno.app |
VITE_AUTH_URL | Your platform's auth worker URL (printed by nno setup) |
VITE_PLATFORM_ID | Your 10-character platform ID |
GITHUB_TOKEN | PAT with read:packages scope (for CI package installs) |
You also need a PACKAGE_READ_TOKEN repository secret for GitHub Actions:
Repository → Settings → Secrets and variables → Actions → New repository secret
Name: PACKAGE_READ_TOKEN
Value: PAT with read:packages scopeOnce the deployment succeeds, your console is live at the Cloudflare Pages URL shown in the dashboard.
Troubleshooting
| Symptom | Fix |
|---|---|
pnpm install fails with 401 | GITHUB_TOKEN is not set or the PAT is expired. Re-export a valid token. |
@neutrino-io/* package not found (404) | Confirm .npmrc contains @neutrino-io:registry=https://npm.pkg.github.com |
| Shell starts but no sidebar items | Set enabled: true for at least one feature in features.overrides.ts |
| Feature installed but not auto-discovered | Confirm the package declares "neutrino": {"type": "feature"} in its package.json and exports featureManifest |
| Auth cookie not set after sign-in | VITE_AUTH_URL is misconfigured. Confirm it matches the auth Worker URL for your platform. |
CI build fails installing @neutrino-io/* | Add PACKAGE_READ_TOKEN secret under Repository → Settings → Secrets and variables → Actions |
Next Steps
You have a running Neutrino platform. Here is where to go next:
- Environments Guide — configure multiple environments, custom domains, and DNS
- Feature Development — build a custom feature package with routes, sidebar navigation, and the
featureManifestexport - Stacks — group features together with shared Cloudflare resources (D1, R2, KV)
- Authentication — understand how Better Auth integrates with your platform's auth Worker
- Multi-Environment Guide — manage
.envfiles for local, staging, and production