Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration

Ennio is configured via ennio.yaml, discovered by searching from the current directory upward.

Minimal Configuration

projects:
  - name: my-project
    repo: git@github.com:user/repo.git
    path: /home/user/repos/repo

Everything else uses defaults: tmux runtime, claude-code agent, worktree workspace, port 3000.

Environment Variable Expansion

All string values support ${VAR} expansion:

api_token: ${ENNIO_API_TOKEN}
projects:
  - name: app
    tracker_config:
      plugin: github
      config:
        token: ${GITHUB_TOKEN}

Config Discovery

Ennio searches for ennio.yaml starting from the current working directory, walking up to the filesystem root. The first match wins.

Full Reference

See the Configuration Reference for every field, its type, default value, and description.

Per-Project Overrides

Each project can override the global defaults for runtime, agent, and workspace:

defaults:
  runtime: tmux
  agent: claude-code
  workspace: worktree

projects:
  - name: fast-project
    runtime: process       # override: use direct process instead of tmux
    agent: aider           # override: use aider instead of claude-code
    workspace: clone       # override: full clone instead of worktree
    # ...

Database

Ennio uses SQLite for persistence. The database file is created automatically:

database_url: sqlite:ennio.db    # relative to working directory

If omitted, Ennio defaults to sqlite:ennio.db (file-based, persists across restarts).

API Authentication

Protect the REST API with a bearer token:

api_token: ${ENNIO_API_TOKEN}

All authenticated endpoints require Authorization: Bearer <token>. The token is compared using constant-time SHA-256 hashing to prevent timing attacks.