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

Chant
intent driven development

Examples

Overview

Complete example configurations for different deployment scenarios.

Solo Developer

Single developer, simple workflow.

Directory Structure

my-project/
├── .chant/
│   ├── config.md
│   ├── specs/
│   │   └── 2026-01-22-001-x7m.md
│   └── prompts/
│       └── standard.md
└── src/

Config

# .chant/config.md
---
project:
  name: my-project

defaults:
  prompt: standard
---

# My Project

Simple workflow using worktrees for isolation.

Sample Spec

# .chant/specs/2026-01-22-001-x7m.md
---
status: pending
created: 2026-01-22
---

# Add user settings page

Create a settings page where users can update their profile.

## Acceptance Criteria

- [ ] Settings page accessible at /settings
- [ ] Users can update display name
- [ ] Users can change email
- [ ] Form validates input
- [ ] Changes persist to database

## Target Files

- src/pages/settings.tsx
- src/api/settings.ts

Workflow

chant add "Add user settings page"
chant work 2026-01-22-001-x7m
# Agent works, commits directly to main

Team Collaboration

Multiple developers with notifications.

Directory Structure

team-project/
├── .chant/
│   ├── config.md
│   ├── specs/
│   └── prompts/
│       ├── standard.md
│       └── tdd.md
└── src/

Config

# .chant/config.md
---
project:
  name: team-project

defaults:
  prompt: standard
---

# Team Project

Worktrees for isolation.

Workflow

# Developer creates spec
chant add "Implement OAuth login"

# Execute - creates branch
chant work 2026-01-22-001-x7m

# Team reviews changes

Enterprise Silent

Personal chant on corporate repo with derived fields.

Directory Structure

corporate-monorepo/
├── .gitignore                    # Includes .chant-local/
├── .chant-local/                 # Gitignored, personal only
│   ├── config.md
│   ├── specs/
│   └── prompts/
└── packages/
    ├── auth/
    └── payments/

Config

# .chant-local/config.md
---
project:
  name: corporate-silent

defaults:
  prompt: standard
  branch_prefix: "alex/"      # Personal prefix for worktrees

enterprise:
  derived:
    jira_key:
      from: branch
      pattern: "([A-Z]+-\\d+)"
    sprint:
      from: branch
      pattern: "sprint/(\\d{4}-Q\\d-W\\d)"
---

# Personal Chant Setup

Silent mode - not visible to team.
Branch naming extracts Jira keys automatically.

Workflow

# Initialize in silent mode
chant init --silent

# Work normally
chant add "AUTH-123: Fix token refresh"
chant work 2026-01-22-001-x7m
# Creates branch: alex/AUTH-123-fix-token-refresh
# Spec frontmatter auto-populated with jira_key: AUTH-123

Scale: Monorepo with K8s

Large monorepo with daemon, workers, metrics.

Directory Structure

monorepo/
├── .chant/
│   ├── config.md
│   ├── specs/
│   │   ├── auth-2026-01-22-001-x7m.md
│   │   └── payments-2026-01-22-001-abc.md
│   ├── prompts/
│   └── providers/
└── packages/
    ├── auth/
    ├── payments/
    └── frontend/

Config

# .chant/config.md
---
project:
  name: monorepo

defaults:
  prompt: standard

scale:
  id_prefix:
    from: path
    pattern: "packages/([^/]+)/"

  daemon:
    enabled: true
    metrics_port: 9090
    api_port: 8080

  worktree:
    sparse: true
    pool_size: 10

  limits:
    max_agents: 50
    max_per_project: 10
    spec_timeout: 30m

  costs:
    daily_limit_usd: 500.00
    auth:
      daily_limit_usd: 100.00
    payments:
      daily_limit_usd: 150.00
---

# Monorepo Configuration

Daemon mode enabled. Per-project limits.

K8s Deployment

# k8s/daemon.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: chant-daemon
spec:
  replicas: 1
  template:
    spec:
      containers:
        - name: daemon
          image: chant:latest
          command: ["chant", "daemon", "start"]
          ports:
            - containerPort: 8080
            - containerPort: 9090
          volumeMounts:
            - name: repo
              mountPath: /repo
      volumes:
        - name: repo
          persistentVolumeClaim:
            claimName: repo-pvc
---
# k8s/worker.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: chant-worker-auth
spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: worker
          image: chant:latest
          command: ["chant", "agent", "worker", "--project", "auth"]
          env:
            - name: CHANT_DAEMON
              value: "http://chant-daemon:8080"
            - name: AGENT_API_KEY
              valueFrom:
                secretKeyRef:
                  name: chant-secrets
                  key: api-key

Grafana Dashboard

# grafana/chant-dashboard.yaml
panels:
  - title: "Specs by Status"
    type: piechart
    query: "chant_specs_total"

  - title: "Active Workers"
    type: gauge
    query: "chant_agents_active"

  - title: "Completions/Hour"
    type: graph
    query: "rate(chant_agent_completions_total[1h]) * 3600"

  - title: "Cost Today"
    type: stat
    query: "chant_costs_usd_total"

Workflow

# Daemon running in K8s

# Add specs (from CI or developer)
chant add "Implement new auth flow" --project auth
chant add "Fix payment processing" --project payments

# Workers automatically pick up and execute
# Monitor in Grafana dashboard
# Notifications via Slack

Approval-Gated Team Development

Team with approval requirements for spec execution. See the Approval Workflow guide for complete documentation on the approval process, rejection handling modes, and workflow examples.


Self-Bootstrap

Building chant using chant.

Bootstrap Sequence

# 1. Manual init (chicken-egg)
mkdir -p .chant/tasks .chant/prompts
cat > .chant/config.md << 'EOF'
---
project:
  name: chant
---
# Chant
EOF

# 2. Create first spec manually
cat > .chant/specs/2026-01-22-001-x7m.md << 'EOF'
---
status: pending
---
# Implement chant init command
EOF

# 3. Implement init command (manually or with other agent)

# 4. Now use chant for everything
chant add "Implement chant add command"
chant work 2026-01-22-002-abc

chant add "Implement chant work command"
chant work 2026-01-22-003-def

# 5. Chant is now self-sustaining

Dogfooding Specs

chant add "Add spec parser"
chant add "Implement Tantivy search"
chant add "Add worktree isolation"
chant add "Implement daemon mode"
chant add "Add Prometheus metrics"
# ... all features as specs