Summary
Add a multi-project workspace mode that lets Forge reason about, plan across, and safely execute tasks spanning multiple repositories while preserving per-project sandbox, permission, memory, and persistence boundaries.
Problem / Opportunity
Forge currently has strong local-first project semantics: project roots are discovered, paths are confined, tasks and conversations are stored per project, and memory indexing is scoped to a project root. Many real engineering tasks are multi-repository by nature:
- Update a CLI package and matching docs site.
- Change an SDK and a sample app together.
- Coordinate a backend API change with a frontend consumer.
- Audit shared configuration across several checked-out repositories.
- Apply a migration plan across a monorepo-like workspace that is not a single Git root.
Without explicit workspace support, users must run separate Forge tasks and manually keep context synchronized.
Proposed Feature
Introduce a workspace abstraction that can include multiple project roots and provide:
forge workspace init, forge workspace add, forge workspace list, and forge workspace run commands.
- Per-project permission scopes and sandbox boundaries inside a single workspace task.
- Cross-project planning where the planner can produce a DAG with project-qualified steps.
- Memory retrieval that can search selected projects while preserving source attribution.
- Dashboard support for workspace task timelines grouped by project.
- Workspace-level summaries, but project-level durable task/session/conversation records.
Scope
Expected implementation areas:
src/config/loader.ts and src/config/paths.ts for workspace config and path resolution.
src/core/orchestrator.ts, src/core/loop.ts, and src/scheduler/dag.ts for project-qualified steps.
src/sandbox/fs.ts for multi-root confinement without weakening realpath protections.
src/permissions/manager.ts for project-specific grants during workspace execution.
src/memory/retrieval.ts, src/memory/cold.ts, and index persistence for scoped multi-project search.
src/cli/commands/ and src/ui/server.ts for workspace commands and views.
- Documentation in
docs/ARCHITECTURE.md, docs/SETUP.md, and docs/CLI-REFERENCE.md.
Acceptance Criteria
Non-Goals
- Replacing Git submodules or package manager workspaces.
- Allowing arbitrary filesystem roots outside explicit workspace membership.
- Implementing distributed execution across machines.
- Automatically committing or pushing changes across repositories.
Dependencies / Risks
- This feature touches core invariants around project root discovery and sandbox confinement.
- Existing task state transitions in
src/persistence/tasks.ts must remain legal and explicit.
- UI and CLI need consistent vocabulary for workspace, project, task, and step identifiers.
- Memory indexing could become expensive if workspace searches are not bounded.
Open Questions
- Should workspace definitions live in a project-local file, global config, or both?
- Should workspace tasks have a top-level id in addition to per-project task ids?
- How should
forge resume behave for a partially completed workspace task?
- Should the first version support nested repositories inside a parent repository?
Summary
Add a multi-project workspace mode that lets Forge reason about, plan across, and safely execute tasks spanning multiple repositories while preserving per-project sandbox, permission, memory, and persistence boundaries.
Problem / Opportunity
Forge currently has strong local-first project semantics: project roots are discovered, paths are confined, tasks and conversations are stored per project, and memory indexing is scoped to a project root. Many real engineering tasks are multi-repository by nature:
Without explicit workspace support, users must run separate Forge tasks and manually keep context synchronized.
Proposed Feature
Introduce a workspace abstraction that can include multiple project roots and provide:
forge workspace init,forge workspace add,forge workspace list, andforge workspace runcommands.Scope
Expected implementation areas:
src/config/loader.tsandsrc/config/paths.tsfor workspace config and path resolution.src/core/orchestrator.ts,src/core/loop.ts, andsrc/scheduler/dag.tsfor project-qualified steps.src/sandbox/fs.tsfor multi-root confinement without weakening realpath protections.src/permissions/manager.tsfor project-specific grants during workspace execution.src/memory/retrieval.ts,src/memory/cold.ts, and index persistence for scoped multi-project search.src/cli/commands/andsrc/ui/server.tsfor workspace commands and views.docs/ARCHITECTURE.md,docs/SETUP.md, anddocs/CLI-REFERENCE.md.Acceptance Criteria
Non-Goals
Dependencies / Risks
src/persistence/tasks.tsmust remain legal and explicit.Open Questions
forge resumebehave for a partially completed workspace task?