gabriel / muse public
workspace.md markdown
140 lines 4.1 KB
Raw
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 clone is run to fetch it.
  • If a member directory already exists, muse pull is 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