CLI Onboarding Reference
This page is the full reference forfased onboard.
For the short guide, see Onboarding Wizard (CLI). For the
Local/Hosting/Remote decision, see First-run Setup Matrix.
What the wizard does
Local mode (default) walks you through:- QuickStart or Manual flow selection
- Local or Hosting setup profile
- Existing config update or auth/session repair
- Workspace location and bootstrap files
- Gateway settings (port, bind, auth)
- Fased Network / federation setup when selected
- Native signer and wallet setup
- Optional singleton Mining wallet setup
- Hosting security when the Hosting profile is selected
- Daemon install, health check, and Control UI/TUI finalization
Local flow details
QuickStart or Manual
- QuickStart applies conservative defaults for a first local Gateway.
- Manual exposes the full sequence.
Setup profile
- Local is for this laptop, desktop, or dev box.
- Local on a VPS means no SSH/firewall hardening.
- Hosting is for a VPS or always-on server and requires Tailscale.
- Hosting on personal Linux changes SSH/firewall behavior.
Existing config detection
- If
~/.fased/fased.jsonexists, choose Review settings or Repair sign-in. - Review settings starts from the existing config and updates explicit setup sections while preserving wallet keystores, Tailscale account/device access, gateway port assumptions, mining/bond state, and firewall state unless you edit those sections.
- Re-running the wizard does not wipe durable instance setup.
- Repair sign-in clears only selected auth/session state.
- Repair keeps
fased.json, gateway token/password, gateway settings, wallet assignments, SAT mining, Fased Network, plugins, Tailscale, and firewall state. - CLI
fased onboard --resetdefaults toauth+sessions; use--reset-scope sessions|auth|auth+sessions. - If config is invalid or contains legacy keys, the wizard stops and asks you to run
fased doctorbefore continuing. - Repair uses
trashand offers scopes:- Sessions only
- Auth only
- Auth + sessions
- Destructive config/state reset is not a normal onboarding path. Use the explicit admin command
fased reset --scope ...only when you intentionally want to remove config/state.
Workspace
- Default
~/.fased/workspace(configurable). - Seeds workspace files needed for first-run bootstrap ritual.
- Workspace layout: Agent workspace.
Gateway
- The connection point for Control UI, CLI, WebChat, channels, and remote clients.
- Prompts for port, bind, and auth mode.
- Recommended: keep token auth enabled even for loopback so local WS clients must authenticate.
- Disable auth only if you fully trust every local process.
- Non-loopback binds still require auth.
- Local Tailscale is hidden from the basic path. Hosting requires Tailscale.
Fased Network
- Optional federation, managed route, and public network setup.
- Fased Network is not required for local chat.
Signer and wallet
- Wallets are for policy-bound actions, not required for chat.
- Agent, Mining, and Vault roles stay separate.
Control UI setup
- On local and Tailscale-hosted starts, the wizard opens an auth-ready Control UI link. The browser exchanges the token for a session and strips the token from the URL.
/agents: create or select the Agent workspace.Agent > Models: add model API keys or sign in and choose model refs.Agent > Skills: create, review, install, configure, edit, and allow skills.Agent > Channels: connect apps and route them to Agents.Agent > Services: connect Gmail, Calendar, GitHub, web/search, browser/media, and APIs.Agent > MemoryandAgent > Tasks: enable archives and schedules when needed.
Hosting security
- Runs only for the Hosting profile.
- Applies Tailscale-first admin access and host hardening where supported.
If no GUI is detected, the wizard prints SSH port-forward instructions for the Control UI instead of opening a browser.
If Control UI assets are missing, rerun
./install.sh from the Fased checkout; if Fased is already installed, run fased doctor --fix for guided repair.
Save the printed Gateway token. It is the recovery token for a new browser,
another machine in your tailnet, or a future fased dashboard --no-open link.Remote mode details
Remote mode configures this machine to connect to a gateway elsewhere.Remote mode does not install or modify anything on the remote host.
Remote only connects to an existing Gateway.
- Remote gateway URL (
ws://...) - Token if remote gateway auth is required (recommended)
- If gateway is loopback-only, use SSH tunneling or a tailnet.
- Discovery hints:
- macOS: Bonjour (
dns-sd) - Linux: Avahi (
avahi-browse)
- macOS: Bonjour (
Auth and model options
Normal interactive onboarding skips this section and sends you toAgent > Models. The options below remain for scripted/non-interactive onboarding and
explicit CLI provider setup.
Anthropic sign-in (Claude Code OAuth)
Anthropic sign-in (Claude Code OAuth)
Opens an Anthropic sign-in URL. After signing in, paste the Anthropic
authorization code if the wizard asks for it.
More detail: Anthropic.
Anthropic token (setup-token paste)
Anthropic token (setup-token paste)
Run
claude setup-token on any machine, then paste the token.
You can name it; blank uses default.
More detail: Anthropic.Anthropic API key
Anthropic API key
Uses
ANTHROPIC_API_KEY if present or prompts for a key, then saves it for daemon use.
More detail: Anthropic.OpenAI sign-in (existing local credential)
OpenAI sign-in (existing local credential)
If
~/.codex/auth.json exists, the wizard can reuse the existing OpenAI
sign-in credential.OpenAI sign-in (ChatGPT OAuth)
OpenAI sign-in (ChatGPT OAuth)
Browser flow through OpenAI sign-in. Internally this still uses the legacy
openai-codex compatibility route until the runtime route is renamed.Sets agents.defaults.model to openai-codex/gpt-5.5 when model is unset
or openai/*.OpenAI API key
OpenAI API key
Uses
OPENAI_API_KEY if present or prompts for a key, then stores the credential in auth profiles.Sets agents.defaults.model to openai/gpt-5.5 when model is unset,
openai/*, or openai-codex/*.Chutes sign-in
Chutes sign-in
Chutes sign-in requires a Chutes OAuth app client id (
cid_...). The
wizard asks for the client id first, then generates the Chutes sign-in URL.
More detail: Chutes.Chutes API key
Chutes API key
Paste a Chutes API key (
cpk_...) for normal Chutes model access.
More detail: Chutes.xAI (Grok)
xAI (Grok)
Supports browser sign-in, device-code sign-in for remote hosts, or
XAI_API_KEY. In the Control UI, use Agent > Models > xAI.OpenCode Zen
OpenCode Zen
Prompts for
OPENCODE_API_KEY (or OPENCODE_ZEN_API_KEY).
Setup URL: opencode.ai/auth.API key (generic)
API key (generic)
Stores the key for you.
Vercel AI Gateway
Vercel AI Gateway
Prompts for
AI_GATEWAY_API_KEY.
More detail: Vercel AI Gateway.Cloudflare AI Gateway
Cloudflare AI Gateway
Prompts for account ID, gateway ID, and
CLOUDFLARE_AI_GATEWAY_API_KEY.
More detail: Cloudflare AI Gateway.MiniMax M2.1
MiniMax M2.1
Config is auto-written.
More detail: MiniMax.
Synthetic (Anthropic-compatible)
Synthetic (Anthropic-compatible)
Prompts for
SYNTHETIC_API_KEY.
More detail: Synthetic.Moonshot and Kimi Coding
Moonshot and Kimi Coding
Moonshot (Kimi K2) and Kimi Coding configs are auto-written.
More detail: Moonshot AI (Kimi + Kimi Coding).
Custom provider
Custom provider
Works with OpenAI-compatible and Anthropic-compatible endpoints.Interactive onboarding supports the same API key storage choices as other provider API key flows:
- Paste API key now (plaintext)
- Use secret reference (env ref or configured provider ref, with preflight validation)
--auth-choice custom-api-key--custom-base-url--custom-model-id--custom-api-key(optional; falls back toCUSTOM_API_KEY)--custom-provider-id(optional)--custom-compatibility <openai|anthropic>(optional; defaultopenai)
Skip
Skip
Leaves auth unconfigured.
- Pick default model from detected options, or enter provider and model manually.
- Wizard runs a model check and warns if the configured model is unknown or missing auth.
- OAuth credentials:
~/.fased/credentials/oauth.json - Auth profiles (API keys + OAuth):
~/.fased/agents/<agentId>/agent/auth-profiles.json
- Default onboarding behavior persists API keys as plaintext values in auth profiles.
--secret-input-mode refenables reference mode instead of plaintext key storage. In interactive onboarding, you can choose either:- environment variable ref (for example
keyRef: { source: "env", provider: "default", id: "OPENAI_API_KEY" }) - configured provider ref (
fileorexec) with provider alias + id
- environment variable ref (for example
- Interactive reference mode runs a fast preflight validation before saving.
- Env refs: validates variable name + non-empty value in the current onboarding environment.
- Provider refs: validates provider config and resolves the requested id.
- If preflight fails, onboarding shows the error and lets you retry.
- In non-interactive mode,
--secret-input-mode refis env-backed only.- Set the provider env var in the onboarding process environment.
- Inline key flags (for example
--openai-api-key) require that env var to be set; otherwise onboarding fails fast. - For custom providers, non-interactive
refmode storesmodels.providers.<id>.apiKeyas{ source: "env", provider: "default", id: "CUSTOM_API_KEY" }. - In that custom-provider case,
--custom-api-keyrequiresCUSTOM_API_KEYto be set; otherwise onboarding fails fast.
- Existing plaintext setups continue to work unchanged.
Headless and server tip: complete OAuth on a machine with a browser, then copy
~/.fased/credentials/oauth.json (or $FASED_STATE_DIR/credentials/oauth.json)
to the gateway host.Outputs and internals
Typical fields in~/.fased/fased.json:
agents.defaults.workspacegateway.*(mode, bind, auth, tailscale)session.dmScope(local onboarding defaults this toper-channel-peerwhen unset; existing explicit values are preserved)- wallet runtime/provider/env fields when local signer setup is enabled
plugins.entries.sat-mining.config.walletIdwhen the singleton Mining wallet is configuredmodels.providers/agents.defaults.modelonly when explicit non-interactive provider flags are usedwizard.lastRunAtwizard.lastRunVersionwizard.lastRunCommitwizard.lastRunCommandwizard.lastRunMode
fased agents add writes agents.list[] and optional bindings.
WhatsApp credentials go under ~/.fased/credentials/whatsapp/<accountId>/.
Sessions are stored under ~/.fased/agents/<agentId>/sessions/.
Channels, skills, hooks, services, and extensions are configured from the
Control UI after onboarding, mostly from the selected Agent. Advanced CLI/config
paths remain available for automation and repair.
Gateway wizard RPC:
wizard.startwizard.nextwizard.cancelwizard.status
- Downloads the appropriate release asset
- Stores it under
~/.fased/tools/signal-cli/<version>/ - Writes
channels.signal.cliPathin config - JVM builds require Java 21
- Native builds are used when available
- Windows uses WSL2 and follows Linux signal-cli flow inside WSL
Related docs
- Onboarding hub: Onboarding Wizard (CLI)
- Automation and scripts: CLI Automation
- Command reference:
fased onboard