Skip to main content

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:

  1. $VIBESHED_PYTHON if set — explicit escape hatch for pinned interpreters.
  2. <project>/.venv/bin/python if it exists — the default, created by the uv venv step above.
  3. The interpreter running the CLI (e.g. the pipx env) — 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.

  1. Scripts are simple and composable — small python scripts that lean on shared/ for logging, state, notifications, and API clients.
  2. Params pass through the CLIvibeshed run <slug> -- --key value forwards everything after -- to the script. No magic wrapper layer.
  3. Success or failure, nothing in between — scripts exit 0 on success, non-zero on failure. logs/<slug>/runs.json records the outcome.
  4. Errors have a timeoutconfig.yaml's timeout_minutes is enforced by vibeshed run; hitting it is a FAILURE with error: "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 in AGENTS.md, CLAUDE.md, PRINCIPLES.md, .gitignore, and requirements.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


Download files

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

Source Distribution

vibeshed-0.2.2.tar.gz (4.0 MB view details)

Uploaded Source

Built Distribution

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

vibeshed-0.2.2-py3-none-any.whl (39.9 kB view details)

Uploaded Python 3

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

Hashes for vibeshed-0.2.2.tar.gz
Algorithm Hash digest
SHA256 ad9748598dc2b1025fed07525db65c6396097d20df04259f411131e1f97c3f05
MD5 7bcb7155e718cc79506cde488a4beee8
BLAKE2b-256 0c6a3bc35c71deaa5f5d7547d2ae2d181752585370aca116e494fe4237af9bf3

See more details on using hashes here.

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

Hashes for vibeshed-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 87e66c38d9cc36f5245ac1cb155a30b5d1ddea6a2bacc132cbdcc0e35671bb9a
MD5 2c98bf8700a5241098dc2bb514c8e9e5
BLAKE2b-256 c5bd782dc6c460617c3b1feb931336439e5600367cb0f6119557bfcd737304ae

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