Skip to content

Quickstart

There are two distinct steps that are easy to confuse:

  1. No key needed. Build, run the doctor diagnostic, and inspect the harness. This works without any provider credentials.
  2. Key needed. Start a real model-backed conversation. This requires a provider credential and — before any mutating work — an execution-isolation decision.

This page keeps them separate on purpose.

From the repository root after a source build:

Terminal window
node .\babel-cli\dist\index.js doctor
node .\babel-cli\dist\index.js setup --json

doctor prints environment findings (runtime, providers, Docker). It may legitimately report missing prerequisites — that is diagnostic information, not an install failure. You can also preview the instruction stack the router would select for a task class, with no model call:

Terminal window
pwsh -File .\tools\resolve-local-stack.ps1 `
-TaskCategory backend `
-Project example_saas_backend `
-Model codex `
-PipelineMode deep `
-Format json

This “inspect the harness” path is useful, but it is not the product — the product is talking to it in step 2.

Configure a provider key in the private CLI profile or your shell environment, which takes precedence. Desktop users can use Providers and models instead; see Desktop setup. Never commit a populated credential file.

Terminal window
New-Item -ItemType Directory -Force "$env:USERPROFILE\.babel\config"
if (-not (Test-Path "$env:USERPROFILE\.babel\config\.env")) {
Copy-Item .\babel-cli\.env.example "$env:USERPROFILE\.babel\config\.env"
}
# edit the private profile .env to set only the providers you use

Copy the blank example only when creating a new profile; keep an existing credential file. On macOS/Linux, use ~/.babel/config/.env with permissions 600. The old checkout-local path requires explicit BABEL_LEGACY_CLI_ENV=1 compatibility opt-in.

Then start the interactive TUI:

Terminal window
node .\babel-cli\dist\index.js interactive

and talk to it:

> Explain this repository
> Review the changes you just made

Before asking Babel to change files, read Execution profiles: the default safe_repo profile fails closed without Docker isolation. There is no host-fallback shortcut that removes that boundary.