See Instructions and Playbooks to configure Charlie’s behavior.
Environment variables
Environment variables allow Charlie to run dev servers, tests, and other tools. They are set from the dashboard and are injected into the Devbox (VM) Charlie operates in at runtime. Common variables you might add:- Non-production tokens, secrets, config, for local development of the repo (e.g. the contents of
.envfiles). - E2E/dev server knobs (e.g.,
PLAYWRIGHT_*,CYPRESS_*, framework‑specificNEXT_PUBLIC_*,VITE_*). NPM_TOKEN(orNPM_AUTH_TOKEN) – Install private NPM packages.- Remote cache or CI tokens used by your build (e.g.,
TURBO_TOKEN/TURBO_TEAMif you use Turborepo remote caching).
How to add environment variables
Environment variables are added from the dashboard and are scoped to a single repository.- Navigate to the dashboard.
- Choose the organization the repo belongs to (you will automatically be redirected if you only have one).
- Click the “ENV VARS” link for the repo you want to add variables to.
- Enter the name and value for each variable (values are encrypted at rest).
Repository configuration
Location:.charlie/config.yml on the default branch.
Changes take effect after merging to the default branch. If the file is missing or invalid, safe defaults are used.
Schema and behavior
checkCommands: { fix?, lint?, types?, test? }– Shell commands Charlie can run inside the Devbox.- All commands run from the repository root inside the Devbox.
fixis run after Charlie edits code (format/lint autofix, codegen, etc.).typesenables a TypeScript verification step when provided.lintruns your linters (for example, ESLint).testruns your unit tests (not E2E or integration tests).
beta– Experimental feature toggles:canApprovePullRequests(default: false) – Allow Charlie to post an “Approve” review when appropriate (never for Charlie‑authored PRs).proactive– Opt‑in list of playbooks to execute automatically each day. Each item is an object with a singleplaybookfield pointing to a file path in your repo (additional fields are not supported in beta). See Proactive Behaviors for details.
Example config
Example (monorepo aggregates)
Additional notes
- Invalid or misshaped values are ignored per‑field and replaced with defaults (other valid keys are preserved).
FAQs
“We merged config changes but nothing changed.”
Config is read from the default branch; ensure the file lives at.charlie/config.yml and changes are merged to default.
“Charlie approved a PR.”
That only happens ifbeta.canApprovePullRequests is true, the review found no significant issues, and the PR isn’t authored by Charlie.