Vibe Coding Framework for Personal Automations — agent-agnostic CLI for vibe-coded jobs with passthrough params, exit-code results, and enforced timeouts.
Project description
VibeShed
A lightweight, agent-agnostic framework for building personal automations.
VibeShed is for vibe-coding automations with an agent in the loop. Every job is a folder of plain files (config.yaml, sequence.md, scripts/main.py) that an agent can read, modify, and call. The vibeshed CLI runs those jobs so cron, CI, another agent, or a human can invoke them with the same interface.
Install
pipx install vibeshed
Asking an agent to set this up for you? Point it at AGENTS_INSTALL_INSTRUCTIONS.md — a step-by-step walkthrough that installs the CLI, scaffolds a project, and wires up the Claude Code plugin.
Claude Code plugin
The plugin/ directory ships a Claude Code plugin with two commands:
/vibeshed:set-project <abs-path>— pin which VibeShed project to target./vibeshed:run <slug> [-- --key value ...]— run a job by slug from anywhere.
Install it inside Claude Code:
/plugin install /absolute/path/to/vibeshed/plugin
See plugin/README.md for details.
Quickstart
vibeshed init my-automations
cd my-automations
uv venv && uv pip install -r requirements.txt # or: python -m venv .venv && .venv/bin/pip install -r requirements.txt
vibeshed new daily-briefing
# edit jobs/daily-briefing/scripts/main.py
vibeshed run daily-briefing -- --date 2026-04-19
vibeshed logs daily-briefing
Everything after -- is forwarded to scripts/main.py. Parse params with argparse (the template scaffolds this for you).
Project interpreter
vibeshed run spawns scripts/main.py with the project's own Python so jobs see the deps in requirements.txt. Resolution order:
$VIBESHED_PYTHONif set — explicit escape hatch for pinned interpreters.<project>/.venv/bin/pythonif it exists — the default, created by theuv venvstep above.- The interpreter running the CLI (e.g. the
pipxenv) — fallback for projects with no deps.
Run vibeshed doctor to see which interpreter will be used and get warned when requirements.txt has no matching .venv.
What it means to be one with the vibeshed
Every job follows four rules. The long form lives in PRINCIPLES.md — scaffolded into every project at PRINCIPLES.md.
- Scripts are simple and composable — small python scripts that lean on
shared/for logging, state, notifications, and API clients. - Params pass through the CLI —
vibeshed run <slug> -- --key valueforwards everything after--to the script. No magic wrapper layer. - Success or failure, nothing in between — scripts exit
0on success, non-zero on failure.logs/<slug>/runs.jsonrecords the outcome. - Errors have a timeout —
config.yaml'stimeout_minutesis enforced byvibeshed run; hitting it is a FAILURE witherror: "timeout ...".
Agents working in a VibeShed repo use these principles to guide users through vibe-coding new automations.
Commands
| Command | Purpose |
|---|---|
vibeshed init [path] |
Scaffold a new automations repo. |
vibeshed new <slug> |
Create a new job from the template. |
vibeshed run <slug> -- <params> |
Execute a job's scripts/main.py with passthrough args, enforce timeout_minutes, record the run. |
vibeshed list |
List all registered jobs. |
vibeshed validate |
Lint registry.yaml and job folder structure. |
vibeshed status |
Show framework version and any drift in managed files. |
vibeshed update [--dry-run] |
Pull the latest framework files with three-way merge. |
vibeshed logs <slug> [-n N] |
Tail recent logs for a job. |
vibeshed doctor |
Check environment, dependencies, and structure. |
vibeshed eject |
Stop tracking framework files — full ownership, no more updates. |
How updates work
Files like shared/, AGENTS.md, CLAUDE.md, and PRINCIPLES.md are framework-managed. VibeShed records their original SHAs in .vibeshed/manifest.json so vibeshed update can:
- Cleanly overwrite files you haven't touched.
- Preserve files where only you changed them.
- Three-way merge files that both you and the framework changed (delegated to
git merge-file). - Preserve any content you add outside the
<!-- vibeshed:managed:start -->/<!-- vibeshed:managed:end -->markers inAGENTS.md,CLAUDE.md,PRINCIPLES.md,.gitignore, andrequirements.txt.
registry.yaml, jobs/, state/, logs/, and .env are never touched by update. They are 100% yours.
If you outgrow the framework, vibeshed eject strips the markers and the manifest so you can take full ownership without forking.
License
MIT
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 vibeshed-0.2.2.tar.gz.
File metadata
- Download URL: vibeshed-0.2.2.tar.gz
- Upload date:
- Size: 4.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad9748598dc2b1025fed07525db65c6396097d20df04259f411131e1f97c3f05
|
|
| MD5 |
7bcb7155e718cc79506cde488a4beee8
|
|
| BLAKE2b-256 |
0c6a3bc35c71deaa5f5d7547d2ae2d181752585370aca116e494fe4237af9bf3
|
File details
Details for the file vibeshed-0.2.2-py3-none-any.whl.
File metadata
- Download URL: vibeshed-0.2.2-py3-none-any.whl
- Upload date:
- Size: 39.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87e66c38d9cc36f5245ac1cb155a30b5d1ddea6a2bacc132cbdcc0e35671bb9a
|
|
| MD5 |
2c98bf8700a5241098dc2bb514c8e9e5
|
|
| BLAKE2b-256 |
c5bd782dc6c460617c3b1feb931336439e5600367cb0f6119557bfcd737304ae
|