Skip to main content

Polyrepo Configuration

Overdeck supports projects with multiple git repositories (like separate frontend/backend repos). Configure workspace settings directly in projects.yaml to manage polyrepo workspaces.

Overview

Polyrepo workspaces create git worktrees in each repository, allowing agents to work across multiple codebases simultaneously while maintaining proper git isolation. For polyrepo projects, we strongly recommend maintaining a dedicated infrastructure repository alongside your code repos:
Benefits of a separate infra repo:
  1. Version-controlled templates - Dev script changes are tracked and shared
  2. Centralized configuration - DNS, ports, Traefik rules in one place
  3. Workspace consistency - All workspaces use the same templates
  4. Team collaboration - Infra changes go through normal PR review
  5. Easy updates - Fix a template once, regenerate affected workspaces
Key files in the infra repo:

Configuration in projects.yaml

Template Placeholders

Service Templates

Overdeck provides built-in templates for common frameworks. Use these to avoid boilerplate: Use a template by referencing it in your service config:
See /pan-workspace-config skill for complete documentation.

What Your Project Needs to Provide

Overdeck is an orchestration layer - it manages workspaces, agents, and workflows, but your project repository provides the actual templates and configuration. Projects can be as simple as just a git repo (for worktree-only workspaces) or as complex as a full polyrepo with Docker, Traefik, and database seeding.

Required: Workspace Templates

Your project needs a .devcontainer/ or template directory with:
Docker Compose templates should use placeholders that Overdeck will replace:
⚠️ Important: File Permissions Always run containers as a non-root user (e.g., user: vscode) to avoid permission issues. Files created by root-owned containers cannot be removed by pan workspace destroy without sudo. The Microsoft devcontainers base image includes a vscode user (UID 1000) that matches most host users.

Required for HTTPS: Traefik Configuration

If you want local HTTPS (recommended), provide a Traefik compose file:
Example Traefik config:

Required for Database Seeding: Seed Directory

For projects with databases:
Your compose template should mount this:

Optional: Agent Templates

For customizing how agents work in your project:

Quick Checklist

Example: Minimal Setup

For a simple monorepo with no Docker:
Overdeck creates workspaces as git worktrees. Docker, HTTPS, and seeding are opt-in.

Container Configuration Tips

When setting up Docker containers for workspaces, avoid these common pitfalls: Maven projects:
  • DO NOT set MAVEN_CONFIG=/some/path as an environment variable
  • Maven interprets MAVEN_CONFIG as additional CLI arguments, not a directory path
  • This causes “Unknown lifecycle phase” errors (e.g., “Unknown lifecycle phase /maven-cache”)
  • Instead, use -Dmaven.repo.local=/path/to/cache in the Maven command
pnpm projects:
  • Set PNPM_HOME=/path to configure the pnpm store location
  • Mount a named volume for the store to share across containers

Polyrepo Merge Considerations

⚠️ Important: Polyrepo merging requires special handling. The current merge-agent is optimized for monorepos.
For polyrepo projects: Current workflow for polyrepo merges:
  1. Agent completes work and pushes branches to each repo
  2. Create merge requests for each repo manually (or via gh pr create)
  3. Review and merge each MR separately
  4. The “Approve & Merge” button is not yet polyrepo-aware
Future enhancement: Polyrepo-aware merge-agent that handles multiple repos automatically.

Quality Gates in Polyrepo Projects

Quality gates support polyrepo projects through path-based filtering: each gate runs only when the repo being merged matches the gate’s path field.

How it works

When a polyrepo merge runs, Overdeck computes the relative path from the project root to the sub-repo being merged (e.g., frontend or backend). It then filters the configured quality gates to only those whose path field matches that relative path.

Configuration example

Important: The path value in a quality gate must exactly match the path value of the corresponding repo in the workspace.repos list (both relative to the project root).

Large-Scale Projects: Progressive Polyrepo

For projects with 10 or more repositories, consider using progressive polyrepo mode instead of the standard all-at-once approach. Benefits of progressive mode:
  • Faster workspace creation — only meta/docs repos initially
  • Less disk usage — agents only check out repos they need
  • Flexible scope — agents add repos as they discover what’s needed
  • Cleaner meta repos — symlinked as read-only, no feature branches
See Progressive Polyrepo Workspaces for full documentation.