Git workflow accelerator for humans and agents
Project description
jetsam
Git workflow accelerator for humans and agents.
Jetsam wraps common multi-step git workflows into single, plannable commands. Every action generates a preview plan before executing, making it safe for interactive use and ideal for AI agent integration via MCP.
Documentation | PyPI | GitHub
Installation
pip install jetsam
# or
uv pip install jetsam
Quick start
# Initialize in a repo
jetsam init
# Check status
jetsam status
# Stage + commit
jetsam save -m "fix parser bug"
# Full pipeline: stage → commit → push → PR
jetsam ship -m "add dark mode"
# Tag and release
jetsam release v0.1.0 --title "First release"
Every command shows a plan and asks for confirmation before executing.
Use --dry-run to preview without executing, or --execute to skip the prompt.
Verb reference
| Verb | Alias | Description |
|---|---|---|
status |
s |
Show repository state snapshot |
save |
v |
Stage and commit with smart defaults |
sync |
y |
Fetch, rebase/merge, and push |
ship |
h |
Full pipeline: stage, commit, push, open PR |
switch |
w |
Switch branches with automatic stash/unstash |
start |
b |
Start work on an issue or feature (branch or worktree) |
finish |
f |
Merge PR and clean up branch |
tidy |
t |
Prune merged branches and stale remote refs |
release |
r |
Tag, push tag, and create platform release |
log |
l |
Condensed commit history |
diff |
d |
Show diff with smart defaults |
pr |
p |
Pull request operations (view/create/list) |
prs |
— | List PRs with check and review status |
checks |
c |
Show CI check status |
issues |
i |
List issues from project tracker |
init |
— | Initialize jetsam in a repo |
Common flags
All workflow verbs (save, sync, ship, switch, start, finish, tidy, release) support:
--dry-run— show plan without executing--execute— execute without prompting--json(global) — output as JSON
Key verb options
save [-m MESSAGE] [--include GLOB] [--exclude GLOB] [FILES...]
ship [-m MESSAGE] [--to BRANCH] [--no-pr] [--merge] [--include GLOB] [--exclude GLOB]
sync [--strategy rebase|merge]
switch BRANCH [-c/--create]
start TARGET [-w/--worktree] [--base BRANCH] [--prefix PREFIX]
finish [--strategy squash|merge|rebase] [--no-delete]
release TAG [--title TITLE] [--notes NOTES] [--draft]
MCP integration
Jetsam includes a built-in MCP server for agent integration:
# Full agent setup: MCP config + routing instructions + warning hooks
jetsam init --mcp --agents claude --hooks claude
# Or just the MCP server config
jetsam init --mcp
This creates .mcp.json for automatic MCP discovery, CLAUDE.md with a routing
table that teaches agents to use jetsam tools instead of raw git/gh, and warning
hooks that alert agents when they bypass jetsam.
The MCP tools mirror CLI verbs with a plan → confirm flow:
- Call a workflow tool (e.g.
save,ship,release) — returns a plan - Optionally call
modify_planto adjust the plan - Call
confirmto execute, orcancelto discard
Additional MCP tools for PR interaction: pr_comment, pr_review,
pr_comments, issue_close.
Shell aliases
Install short aliases for common operations:
jetsam init --aliases
This adds the following aliases to your shell config:
| Alias | Command |
|---|---|
jt |
jetsam |
jts |
jetsam status |
jtv |
jetsam save |
jty |
jetsam sync |
jth |
jetsam ship |
jtp |
jetsam ship --pr |
jtw |
jetsam switch |
jtl |
jetsam log |
jtd |
jetsam diff |
Worktree support
Jetsam supports git worktrees for parallel development:
# Start work in a new worktree
jetsam start my-feature --worktree
# Finish and clean up the worktree
jetsam finish
Shared paths
Create a .git-worktree-shared file in the repo root to automatically symlink
paths into new worktrees (one path per line):
.env
node_modules
.venv
Lines starting with # are ignored.
Configuration
Jetsam stores its configuration in .jetsam/ at the repo root:
| Path | Purpose |
|---|---|
.jetsam/ |
Config directory (created by init) |
.jetsam/plans/ |
Temporary plan storage (5-minute TTL) |
.mcp.json |
MCP server config (created by init --mcp) |
.git-worktree-shared |
Paths to symlink into worktrees |
Platform support
Jetsam auto-detects GitHub and GitLab from remote URLs:
Git pass-through: any unrecognized command is forwarded to git, so jetsam log --oneline
works exactly like git log --oneline.
License
MIT
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
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 jetsam_mcp-0.2.1.tar.gz.
File metadata
- Download URL: jetsam_mcp-0.2.1.tar.gz
- Upload date:
- Size: 103.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b137b1a4ff8df20e372ca90f8939c8c852ebe609c6437d48d3b3d505e40a92e8
|
|
| MD5 |
9e6c2aec2d77cce9cb7788458949761c
|
|
| BLAKE2b-256 |
f10314fb5191c59277b1da43f35ed326b344adbf2db9cfb773cb39a6857f7844
|
Provenance
The following attestation bundles were made for jetsam_mcp-0.2.1.tar.gz:
Publisher:
publish.yml on teaguesterling/jetsam
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jetsam_mcp-0.2.1.tar.gz -
Subject digest:
b137b1a4ff8df20e372ca90f8939c8c852ebe609c6437d48d3b3d505e40a92e8 - Sigstore transparency entry: 1155437658
- Sigstore integration time:
-
Permalink:
teaguesterling/jetsam@5a6edc2480fe53d42a9c5680f9587aeb933fcfe9 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/teaguesterling
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a6edc2480fe53d42a9c5680f9587aeb933fcfe9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file jetsam_mcp-0.2.1-py3-none-any.whl.
File metadata
- Download URL: jetsam_mcp-0.2.1-py3-none-any.whl
- Upload date:
- Size: 60.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa08fc757b20ea9be6970549f67baa82ccaef7f490a0d885a2c0a58ef723db0e
|
|
| MD5 |
0658d6597bbb634e808841d2d79c3b11
|
|
| BLAKE2b-256 |
6ba5225399e5be7210490a2a92ee012f6b597278a01a32c583f165bd2644be67
|
Provenance
The following attestation bundles were made for jetsam_mcp-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on teaguesterling/jetsam
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jetsam_mcp-0.2.1-py3-none-any.whl -
Subject digest:
fa08fc757b20ea9be6970549f67baa82ccaef7f490a0d885a2c0a58ef723db0e - Sigstore transparency entry: 1155437671
- Sigstore integration time:
-
Permalink:
teaguesterling/jetsam@5a6edc2480fe53d42a9c5680f9587aeb933fcfe9 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/teaguesterling
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a6edc2480fe53d42a9c5680f9587aeb933fcfe9 -
Trigger Event:
push
-
Statement type: