Skip to main content

Multi

Project description

multi

multi is a better way to work with VS Code/Cursor on multiple Git repos at once. It is an alternative to multi-root workspaces that offers more flexibility and control. With multi, you can gain control over how tasks, debug runnables, and various IDE and linter settings are combined from multiple project repos ("sub-repos") located within a root workspace folder.

Documentation

Features:

  • Generates files in your root .vscode folder from sub-repo launch.json, tasks.json, and settings.json files.
  • Supports optional installSets so installer scripts can sync only a public/runtime subset of repos.
  • Optionally generates CLAUDE.md and AGENTS.md files from tracked AGENTS.parts/*.md files.
  • In monorepo mode, syncs sub-repo GitHub workflows into root .github/workflows.

Installation

Using pipx:

  • Install pipx
  • Run pipx install multi-workspace

Using uv

  • Install uv
  • Run uv tool install multi-workspace

Getting started

To get started, create a new workspace directory that will house all your related repos and run:

multi init

When prompted, paste in the URLs of all the repositories you want to have in your workspace. You can optionally specify descriptions of what they do, which can be included in generated agent instruction files when that feature is enabled.

For scripts, you can also initialize non-interactively:

multi init \
  --repo https://github.com/org/backend \
  --repo-description "Backend API" \
  --repo https://github.com/org/frontend \
  --repo-description "Frontend app"

To create GitHub repositories first, add --github-repo entries. This uses gh repo create and defaults to private visibility:

multi init \
  --github-repo org/backend \
  --github-description "Backend API" \
  --github-repo org/frontend \
  --github-description "Frontend app"

For --github-repo, the GitHub CLI (gh) must already be installed and authenticated.

When repository slugs are product-prefixed, multi init automatically writes short local directory names into multi.json when the slug matches the workspace name prefix. For example, in a t-ide/ workspace, t-ide-cli becomes local folder cli.

The same naming rule applies to multi add, so adding https://github.com/org/t-ide-cli inside a t-ide/ workspace will also default to local folder cli.

For public installer workflows, add installSets to repo entries and run a filtered sync:

{
  "repos": [
    { "name": "cli", "url": "https://github.com/org/product-cli", "installSets": ["default", "dev"] },
    { "name": "ios", "url": "git@github.com:org/product-ios.git", "installSets": ["dev"] }
  ]
}
multi sync --install-set default

Running multi sync without --install-set still includes every repo. Repos without installSets are included in every named set.

To grant or remove GitHub collaborator access across every GitHub repo in a workspace, use:

multi collaborator add octocat --permission maintain --yes
multi collaborator add --yes
multi collaborator remove octocat --yes
multi collaborator recent-users

When the workspace root repository has a GitHub origin, multi collaborator applies the change there too.

Recent collaborator usernames are saved under ~/.multi, and multi collaborator add can prompt from that list when no username is supplied.

If one repo fails, multi collaborator continues through the rest of the workspace and reports the failures at the end.

It is recommended you also install the VS Code Extension that automatically keeps your project synced when edits are made to synced files. To manually sync, you can run multi sync.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multi_workspace-3.2.2.tar.gz (45.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multi_workspace-3.2.2-py3-none-any.whl (62.6 kB view details)

Uploaded Python 3

File details

Details for the file multi_workspace-3.2.2.tar.gz.

File metadata

  • Download URL: multi_workspace-3.2.2.tar.gz
  • Upload date:
  • Size: 45.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for multi_workspace-3.2.2.tar.gz
Algorithm Hash digest
SHA256 ab26ba3313fc60da08d7d2c1363e38fd60278c3ab200a57d59add991de5e81bb
MD5 f1ccd1909c1a9fd9b87e0562c0b5e86f
BLAKE2b-256 411a409533b7ae80ab982944aca977231a57cf0a60545ed99514d95394aed2c3

See more details on using hashes here.

File details

Details for the file multi_workspace-3.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for multi_workspace-3.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6d592c9a75e8373936e438e827c1fe6faa37802418af3f66dba07e66559db9c4
MD5 0bf1ca220b54c9ecd2ce1ca50197184d
BLAKE2b-256 301a06ed29b916c238ef8afa51718da2459d70111a21d61a0d088b70c1648f4f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page