workspace.md
markdown
sha256:c0eba5ad689cec79f4a3fcdc4f5da78556cb4b8cb7b330f944634356c10379ed
chore: pivot to nightly channel — bump version to 0.2.0.dev…
Sonnet 5
patch
12 days ago
muse workspace — multi-repository workspaces
A workspace links multiple independent Muse repositories together under a single manifest, giving you a unified status view, one-shot synchronisation, and a clear model for multi-repo projects.
When to use workspaces vs. worktrees
| Need | Use |
|---|---|
| Multiple branches of one repo simultaneously | muse worktree |
| Multiple separate repos that evolve together | muse workspace |
Use cases
- A film score with a melody repo, a harmony repo, and a samples repo
- A machine learning pipeline with a model repo, a dataset repo, and an eval repo
- A micro-service backend where each service lives in its own Muse repo
- An agent swarm where each autonomous agent manages its own state repo, and the coordinator workspace tracks them all
Workspace manifest
The manifest lives at .muse/workspace.toml:
[[members]]
name = "core"
url = "https://musehub.ai/acme/core"
path = "repos/core"
branch = "main"
[[members]]
name = "sounds"
url = "https://musehub.ai/acme/sounds"
path = "repos/sounds"
branch = "v2"
Subcommands
muse workspace add <name> <url>
Register a member repository.
muse workspace add core https://musehub.ai/acme/core
muse workspace add sounds https://musehub.ai/acme/sounds --branch v2
muse workspace add data /path/to/local/dataset --path vendor/data
| Option | Default | Description |
|---|---|---|
--path |
repos/<name> |
Relative checkout path inside the workspace |
--branch, -b |
main |
Branch to track |
Registration writes the manifest entry. Run muse workspace sync to clone.
muse workspace list
List all registered members with their status.
name branch present HEAD url
──────────────────────────────────────────────────────────────────────────────
core main yes a1b2c3d4ef56 https://musehub.ai/acme/core
sounds v2 yes deadbeef0012 https://musehub.ai/acme/sounds
data main no (not cloned) /path/to/local/dataset
muse workspace remove <name>
Remove a member from the manifest. The member's directory is not deleted.
muse workspace remove sounds
muse workspace status
Rich status view for all members.
Workspace: /Users/me/myproject
✅ core branch=main head=a1b2c3d4ef56
path: /Users/me/myproject/repos/core
url: https://musehub.ai/acme/core
❌ data branch=main head=not cloned
path: /Users/me/myproject/repos/data
url: /path/to/local/dataset
muse workspace sync [name]
Clone or pull all members (or one named member).
muse workspace sync # sync everything
muse workspace sync core # sync only 'core'
- If a member directory does not exist,
muse cloneis run to fetch it. - If a member directory already exists,
muse pullis run to update it.
Agent workflows
Coordinator + worker pattern
# Coordinator workspace tracks N worker repos:
muse workspace add worker-001 https://musehub.ai/swarm/worker-001
muse workspace add worker-002 https://musehub.ai/swarm/worker-002
muse workspace add worker-003 https://musehub.ai/swarm/worker-003
# Sync all workers to latest:
muse workspace sync
# Status across all:
muse workspace status
Release pipeline
# Pin all members to release branches before archiving:
muse workspace add core https://musehub.ai/acme/core --branch release/v2
muse workspace add sounds https://musehub.ai/acme/sounds --branch release/v2
muse workspace sync
# Archive each member:
for member in repos/*/; do
(cd "$member" && muse archive --output "../../archives/$(basename $member).tar.gz")
done
Exit codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Validation error, duplicate name, or member not found |
File History
10 commits
sha256:c287f599c5429903a139eadf3c5db5d930520e57cb0c3c575d9570e953c3b2d6
chore: bump version to 0.2.0.dev2 — nightly.2
Sonnet 4.6
patch
11 days ago
sha256:8de4334a98c945aace420969d389ad678aa926d4ab4e886b2ac4c4241cb3bf2b
revert: keep pyproject.toml in canonical PEP 440 form
Sonnet 4.6
patch
14 days ago
sha256:50bb615c573aa4b928fca75b60f82ba2a659910066507cec6a95c412ae22ccb9
docs: add issue docs for push have-negotiation bug (#55) an…
Sonnet 4.6
18 days ago
sha256:d90d175cded68aae1d4ffcf4858917854195d0cd8ce1fe73cee4dbc02541cb74
chore: trigger push to surface null-OID paths
Sonnet 4.6
23 days ago
sha256:e452ad9a6ace6ccc6d875a35e06caf9da5576a970c1c36133b69a891ce5fefa8
chore: prebuild timing test
Sonnet 4.6
33 days ago
sha256:0008ab6695e3e064b3e236b24fd19e538fef6a588eb0d211622f4466d919c0b1
merge: pull staging/dev — advance to 0.2.0rc12
Sonnet 4.6
patch
35 days ago
sha256:9c33d61749fff814c5226d5386aa2af7064c2c02788594a25fdd709358132eea
fix: _PROPOSAL_PREFIX_RESOLVE_LIMIT 200 → 100 to match hub …
Sonnet 4.6
47 days ago
sha256:36c3cb3e76619d4c30a6d9bf81b5ec4ff148e30dcfed913e3114ca7b43b81c7e
fix: rename objects→blobs in push client and all stale test…
Sonnet 4.6
patch
49 days ago
sha256:c06a9b9b9fee26c68ea725b44d54b2c0a171301ce9de746d5b656617b4463a9a
fix: repair four test failures from post-migration audit
Sonnet 4.6
patch
56 days ago
sha256:1900655993c83c4107067375548a7be823e471d2515830842f1a12cba4bd3cdf
fix: unified object store migration — idempotent writes, JS…
Sonnet 4.6
minor
⚠
56 days ago