Skip to main content

Anvil

 █████╗ ███╗   ██╗██╗   ██╗██╗██╗     
██╔══██╗████╗  ██║██║   ██║██║██║     
███████║██╔██╗ ██║██║   ██║██║██║     
██╔══██║██║╚██╗██║╚██╗ ██╔╝██║██║     
██║  ██║██║ ╚████║ ╚████╔╝ ██║███████╗
╚═╝  ╚═╝╚═╝  ╚═══╝  ╚═══╝  ╚═╝╚══════╝

Create isolated multi-repository workspaces for engineering tasks.

Installation

uv tool install git+https://github.com/felixscherz/anvil

Getting started

Create a workspace

Provide a target directory and one or more repository specifiers. Each specifier can be a local path to an existing Git repository or any remote URL accepted by git clone.

anvil create --target /tmp/workspaces/feature-abc \
  ~/repos/my-service \
  git@github.com:org/other-service.git

Anvil will:

  1. Infer the branch name from the target directory name (feature-abc).
  2. For local paths — create a git worktree on a new branch at the tip of the default branch.
  3. For remote URLs — clone the repository and check out a new branch.
  4. Write a manifest to /tmp/workspaces/feature-abc/.anvil/manifest.json.

Example output:

Creating Anvil workspace: /tmp/workspaces/feature-abc
Branch: feature-abc
  + my-service -> /tmp/workspaces/feature-abc/my-service
  + other-service -> /tmp/workspaces/feature-abc/other-service

Created Anvil workspace: /tmp/workspaces/feature-abc
Branch: feature-abc
  - my-service -> /tmp/workspaces/feature-abc/my-service
  - other-service -> /tmp/workspaces/feature-abc/other-service

Clean up a workspace

anvil clean --target /tmp/workspaces/feature-abc

Anvil reads the manifest, prints a summary, and prompts for confirmation before removing everything.

Anvil workspace: /tmp/workspaces/feature-abc
Branch: feature-abc
Repositories (2):
  - my-service (worktree) -> /tmp/workspaces/feature-abc/my-service
  - other-service (clone) -> /tmp/workspaces/feature-abc/other-service
Remove Anvil workspace at /tmp/workspaces/feature-abc containing 2 repositories? [y/N]

Skip the prompt with --yes:

anvil clean --target /tmp/workspaces/feature-abc --yes

Add a repository to an existing workspace

anvil add --target /tmp/workspaces/feature-abc ~/repos/another-service

Anvil reads the branch name from the existing manifest (feature-abc) and creates the new repository on that same branch. The manifest is updated in place with the new entry appended. Rollback applies only to repos added in the current run — existing workspace members are untouched.

Notes

  • The branch name is derived from the basename of --target. /tmp/workspaces/feature-abc → feature-abc.
  • anvil add reads the branch name from the existing manifest — the target directory name is irrelevant.
  • The same branch name is created in every repository in the workspace — this is expected and correct.
  • If any repository fails during create or add, Anvil rolls back only the repos created in that run.
  • Anvil will refuse to proceed if the target is non-empty, if a derived branch already exists, or if two repositories share the same derived name.

Metadata

Release files for anvil-workspaces 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for anvil-workspaces 0.1.0
File Size Uploaded Provenance Actions
anvil_workspaces-0.1.0.tar.gz 35.0 kB Without provenance Details for anvil_workspaces-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for anvil-workspaces 0.1.0
File Interpreter ABI Platform Actions
anvil_workspaces-0.1.0-py3-none-any.whl Python 3 none any Details for anvil_workspaces-0.1.0-py3-none-any.whl

Total release size: 49.8 kB

Release files / anvil_workspaces-0.1.0.tar.gz

Download URL anvil_workspaces-0.1.0.tar.gz
Size 35.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4d885934a407f133a1e707b2da903d934b0070db7998a86a710f3ed14c29337c
BLAKE2b-256 checksum
How to use checksums
bb96f76704990cdcb65b056a04f534899a0756a0d7757fbda906e19cc5b75b7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / anvil_workspaces-0.1.0-py3-none-any.whl

Download URL anvil_workspaces-0.1.0-py3-none-any.whl
Size 14.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
62e397ebfce7b455b2095acfe481d0d2ee918d73be0cd664064245002a269426
BLAKE2b-256 checksum
How to use checksums
3c6e9dbbf87da2a6b818e1a475598c93445f2eee45d5b2ba57905a89f01a07ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for anvil-workspaces 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page