Skip to main content

Project Registry

Overdeck’s project registry enables multi-project management with intelligent issue routing and label-based workspace creation.

Overview

Projects are registered in ~/.overdeck/projects.yaml. Each project can have:
  • Issue routing rules - Route issues to different subdirectories based on labels
  • Custom workspace commands - For complex polyrepo setups
  • Linear team mapping - Connect projects to Linear teams
While projects.yaml is the source of truth, much of this configuration is also surfaced in the dashboard’s Settings page, alongside model routing for the agents and conversations Overdeck runs and tracker API keys.
Overdeck manages both the workflow pipeline and the agents and conversations that move issues through it. The Settings page is where model routing for those agents lives, while per-project routing and workspace rules below are edited in ~/.overdeck/projects.yaml.

Registering Projects

Rename a project

The registration key is the stable identifier stored as the project’s YAML map key. It is derived when the project is registered and cannot be renamed. The display name is the human-facing label shown throughout Overdeck; it can be renamed, but it cannot match another project’s registration key or display name, ignoring letter case. In the dashboard, use the pencil beside the name on the project page, or right-click the project tree row and choose Rename project. Both controls open an inline editor for the display name while preserving the registration key.

Project Configuration

Projects are defined in ~/.overdeck/projects.yaml:

Configuration Fields

*Not required if issue_prefixes or issue_pattern is specified.

Release Configuration

The optional release: section tells Overdeck how to coordinate a project’s post-merge rollout across multiple components. Overdeck resolves a release plan, waits for each component to become healthy, runs verification commands, halts the plan on failure, and runs a rollback hook when one is configured.

Component fields

Release semantics

  • trigger: auto means Overdeck waits and verifies an external deploy; it does not invoke the provider deploy itself.
  • Components are released in depends_on order using a topological sort. A component is only started after its dependencies pass.
  • If any check fails, Overdeck stops all later components and records the final issue-level status.
  • Projects without a release: section are skipped cleanly — no failure is recorded.

Release status lifecycle

Issue-level releaseStatus moves through the following values: pendingreleasingpassed
pendingreleasingfailed
pendingreleasingpartial
pendingreleasingrolled_back
pendingskipped
The seven possible values are: pending, releasing, passed, failed, partial, rolled_back, and skipped. Inspect or retry a release from the CLI with pan rollout:
pan rollout is distinct from pan release, which publishes npm stable/canary packages.

Label-Based Routing

Issues are routed to different subdirectories based on their labels:
  1. Labeled issues - Matched against issue_routing rules in order
  2. Default route - Issues without matching labels use the default: true path
  3. Fallback - If no default, uses the project root path
Example: An issue with label “splash” in the MIN team would create its workspace at /home/user/projects/myn/splash/workspaces/feature-min-xxx/.

Linear Project Mapping

If you have multiple Linear projects, configure which local directory each maps to. Create/edit ~/.overdeck/project-mappings.json:
The dashboard uses this mapping to determine where to create workspaces when you click “Create Workspace” or “Start Agent” for an issue.

Custom Workspace Commands (Legacy)

Note: For most polyrepo projects, use the built-in workspace configuration (see Polyrepo Configuration) instead of custom scripts. Custom commands are only needed for highly specialized setups.
For projects that need logic beyond what the configuration supports, you can specify custom workspace scripts:
When workspace_command is specified, Overdeck calls your script instead of creating a standard git worktree. The script receives the normalized issue ID (e.g., min-123) as an argument. When workspace_remove_command is specified, Overdeck calls your script when deleting workspaces (e.g., aborting planning with “delete workspace” enabled). This is important for complex setups that need to:
  • Stop Docker containers and remove volumes
  • Clean up root-owned files created by containers
  • Remove git worktrees from multiple repositories
  • Release port assignments
  • Remove DNS entries
What your custom script should handle:
  • Creating git worktrees for multiple repositories (polyrepo structure)
  • Setting up Docker Compose files and dev containers
  • Configuring environment variables and .env files
  • Setting up DNS entries for workspace-specific URLs (e.g., Traefik routing)
  • Creating a ./dev script for container management
  • Copying agent configuration templates (CLAUDE.md, .mcp.json, etc.)
Example script flow:
The standard pan workspace create command will automatically detect and use your custom script.

Project Initialization

When registering a new project with Overdeck (pan project add), the system will:
  1. Check for existing PRD - Look for docs/PRD.md, PRD.md, README.md, or similar
  2. If found: Use it to create/update the canonical PRD format, prompting for any missing crucial information
  3. If not found: Generate one by:
    • Analyzing the codebase structure
    • Identifying key technologies and patterns
    • Asking discovery questions about the product
This ensures every Overdeck-managed project has a well-defined canonical PRD that agents can reference.

Progressive Workspaces

For large projects with 10+ repositories, progressive workspaces provide on-demand repo checkout. Enable in workspace config:
Key progressive fields: See Progressive Polyrepo for full documentation.