Skip to main content
Coda is most useful when it shows up on its own. Posting digests, triaging issues, flagging stale PRs. The Coda repo has canonical setup docs for each piece below.

Add more repos

Edit repos.yaml to add the repos you want Coda to know about:
repos:
  - url: https://github.com/your-org/repo-a
    branch: main
  - url: https://github.com/your-org/repo-b
    branch: develop
Two requirements that bite people:
  1. The repo must be in your GitHub token’s “Only select repositories” list. Without that, Coda can’t clone it.
  2. The token needs Contents R/W, Pull requests R/W, Issues R/W, Metadata R. Anything missing fails silently.
Full GitHub token setup (with the Fine-grained PAT walkthrough): GITHUB_ACCESS.md. After editing repos.yaml, restart to clone the new repos:
docker compose up -d

Turn on scheduled tasks

Coda ships three scheduled tasks. Two are gated on env vars:
TaskScheduleWhat it doesHow to enable
Repo SyncEvery 5 minutesPulls latest changes from every configured repoOn by default
Daily DigestEach morningPosts what merged yesterday, what PRs are waiting, what issues opened, what’s gone staleSet DIGEST_CHANNEL
Issue TriageDailyReviews open issues against the actual codebase, labels them, flags AI-generated slop, posts a summarySet TRIAGE_CHANNEL
For maintainers of popular open-source repos, the volume of low-quality, AI-generated issues has exploded: vague titles, generic descriptions, “improve error handling” with zero specifics. The Triager checks each issue against the actual code and tags the slop, so a maintainer can scan the digest in 10 seconds and know what’s worth attention. Channel IDs come from Slack: right-click the channel → View details → copy the ID at the bottom (looks like C0123456789).
# .env
DIGEST_CHANNEL=C0123456789
TRIAGE_CHANNEL=C0987654321
Restart, and the schedules pick up. You can also trigger triage on-demand with POST /triage-issues.

How the code-writing flow stays out of main

When you ask Coda to write code, the Coder works in a git worktree off main:
@Coda add rate limiting to /api/v1/users using the same pattern as /orders
@Coda fix the NoResultFound bug in payment_service
@Coda write integration tests for the export endpoint
The flow:
  1. Coder creates a coda/<branch-name> worktree off main.
  2. Reads the relevant code, plans the change, writes it.
  3. Runs whatever validation it has access to.
  4. Pushes the branch and opens a PR.
  5. A human reviews and merges. Coda never merges.
Your main branch is never touched. Worktrees clean up on restart.

Build your own scheduled tasks

Coda’s tasks live in tasks/. Each is a function registered with the AgentOS scheduler in app/main.py. The same pattern works for anything you want Coda to do on a cadence:
  • Auto PR review when new PRs are opened
  • Stale branch alerts for branches with no commits in N days
  • Convention drift detection comparing recent merges against your style guide
  • Weekly summaries beyond the daily digest
The Scheduling page has the API reference for the runtime side.

Going deeper

To learnSee
The team architecturecoda/team.py and coda/agents/
Run evalspython -m evals.run --category security
Use Parallel for premium web researchSet PARALLEL_API_KEY from parallel.ai
Run local + production in parallel (separate Slack apps)Deploy to Railway
Comparable templatesScout, Dash
Building a fully custom AgentOS appBuild a Product