Local git workspace management CLI built on the untaped SDK.
Project description
untaped-workspace
untaped-workspace is a standalone CLI for managing local git workspaces,
built on the untaped SDK. It
manages collections of repos through per-workspace untaped.yml manifests and
a local registry.
Install
uv tool install untaped-workspace
untaped-workspace also ships the untaped-workspace agent skill for Codex
or Claude.
Commands
untaped-workspace list
untaped-workspace show [--workspace <ws> | --path <dir>]
untaped-workspace init <name>
untaped-workspace adopt <path>
untaped-workspace import <source.yml> <dest>
untaped-workspace add <url>... [--workspace <ws> | --path <dir>]
untaped-workspace remove <repo>... [--workspace <ws> | --path <dir>]
untaped-workspace branch set <branch> [--workspace <ws> | --path <dir>]
untaped-workspace branch unset [--workspace <ws> | --path <dir>]
untaped-workspace branch apply [--workspace <ws> | --path <dir>] [--repo <repo>]...
untaped-workspace sync [--workspace <ws> | --path <dir> | --all] [--repo <repo>]... [-j N]
[--timeout N]
untaped-workspace status [--workspace <ws> | --path <dir> | --all] [--repo <repo>]...
untaped-workspace foreach <cmd> [--workspace <ws> | --path <dir>] [--repo <repo>]...
[--timeout N]
untaped-workspace path <name>...
untaped-workspace shell-init zsh
untaped-workspace edit [--workspace <ws> | --path <dir>]
Profile selection uses the built-in --profile option, which works in any
token position, so the selector can stay with the command being run:
untaped-workspace init prod --profile work
untaped-workspace status --workspace prod --profile work
See docs/workspace.md for manifest shape, command details, registry behavior, and shell helper examples.
sync -j N runs up to N repo sync jobs concurrently, whether syncing one
workspace or --all. Missing clones still use the central bare cache plus
git clone --reference; existing clones fetch and pull their own working
remotes without touching the cache.
sync --all and status --all keep going when a registered workspace has a
missing or invalid manifest. They emit a workspace-level unavailable row with
repo="" and a detail message; malformed registry entries remain hard errors.
foreach closes stdin for child commands and applies a 600s per-repo timeout by
default. Interactive commands receive EOF, and commands that exceed the timeout
return 124 unless --timeout N is raised.
Prune operations protect local git work before deleting clones. sync --prune
skips unsafe orphan clones, while remove --prune and forget --prune refuse
before mutating manifests, registry state, or files. The local-only safety check
blocks dirty/untracked/staged work, stash entries, and commits or local tags not
reachable from local remote-tracking refs. Because it does not fetch, stale
remote-tracking refs are trusted as the offline safety boundary. remove --prune
and forget --prune preview targets and prompt once unless --yes / -y is
passed; declining leaves manifests, registry state, and files unchanged.
Development
uv sync
uv run pytest
uv run mypy
uv run ruff check --fix
uv run ruff format
uv run untaped-workspace --help
See AGENTS.md for architecture rules and workspace-specific contracts.
Security
Please report suspected vulnerabilities privately. See SECURITY.md.
Contributing
See CONTRIBUTING.md and AGENTS.md for the local workflow, architecture rules, and workspace-specific contracts.
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file untaped_workspace-0.11.0.tar.gz.
File metadata
- Download URL: untaped_workspace-0.11.0.tar.gz
- Upload date:
- Size: 41.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
777db571851059201389e66afb25146cb35ead97c2f34bc4dacd78d07f1bcd2f
|
|
| MD5 |
75bf6b5849f90e2ee84c0828a391e5fb
|
|
| BLAKE2b-256 |
26ed51ca3e5fde6f9321092044fbf516f33eeffab825dc74d1f845124fd498ad
|
Provenance
The following attestation bundles were made for untaped_workspace-0.11.0.tar.gz:
Publisher:
release.yml on alexisbeaulieu97/untaped-workspace
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
untaped_workspace-0.11.0.tar.gz -
Subject digest:
777db571851059201389e66afb25146cb35ead97c2f34bc4dacd78d07f1bcd2f - Sigstore transparency entry: 2063607830
- Sigstore integration time:
-
Permalink:
alexisbeaulieu97/untaped-workspace@10dfb9a67b8069b7bbc1873642704d782345a44d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alexisbeaulieu97
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@10dfb9a67b8069b7bbc1873642704d782345a44d -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file untaped_workspace-0.11.0-py3-none-any.whl.
File metadata
- Download URL: untaped_workspace-0.11.0-py3-none-any.whl
- Upload date:
- Size: 65.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a00f44275df7a4845476838b8c6253a537228d9c4fe7d513961cd408316a134
|
|
| MD5 |
558cfd876302cbe6eca4879cac982591
|
|
| BLAKE2b-256 |
a34114cbac9d14f436ef3d5faaf1d0038bee98e7872d441ca1d08bb70e64fdb9
|
Provenance
The following attestation bundles were made for untaped_workspace-0.11.0-py3-none-any.whl:
Publisher:
release.yml on alexisbeaulieu97/untaped-workspace
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
untaped_workspace-0.11.0-py3-none-any.whl -
Subject digest:
4a00f44275df7a4845476838b8c6253a537228d9c4fe7d513961cd408316a134 - Sigstore transparency entry: 2063607836
- Sigstore integration time:
-
Permalink:
alexisbeaulieu97/untaped-workspace@10dfb9a67b8069b7bbc1873642704d782345a44d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alexisbeaulieu97
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@10dfb9a67b8069b7bbc1873642704d782345a44d -
Trigger Event:
workflow_dispatch
-
Statement type: