Skip to main content

skep

Govern your AI coding agent. Sandbox it, verify its work, approve before it lands.

skep is a local-first supervisor for AI coding agents — Claude Code, Codex, Aider, or its own built-in worker. Every agent works behind a contract: sandboxed execution in a disposable worktree, independent re-verification of whatever the agent claims, and a patch that reaches your repository only when you approve it. It is v1, single-operator by design, and has been daily-driven in the field since 2026-07-17.

Install

pipx install skep

Or uvx skep to try it without installing. On Debian/Ubuntu and other PEP 668 distros, the system Python refuses bare pip install with an externally-managed-environment error — install skep as an app instead: sudo apt install pipx && pipx install skep, then pipx ensurepath. Inside a virtual environment, pip install skep works as ever. Please don't reach for --break-system-packages — least privilege applies to installers too. From a checkout, bash scripts/install.sh detects the source tree and runs uv sync. Linux sandboxing needs bubblewrap (sudo dnf install bubblewrap / sudo apt install bubblewrap); macOS uses Seatbelt out of the box.

60-second quickstart

skep serve   # daemon + web UI at http://127.0.0.1:8765
skep chat    # the same conversation in your terminal

Tell the chat what repo to work on and what you want done — approvals, cards, and live run events arrive inline. Or skip the conversation:

skep run /path/to/your-repo "fix the failing test" --execution-mode workspace
skep review <task_id>             # inspect the patch + evidence
skep review <task_id> --approve   # lands on branch skep/<task_id>, never main

The complete first-run path, worker setup, and sandbox notes are in docs/quickstart.md.

The security model

The agent never touches your repository directly. It works in an isolated git worktree, produces a patch plus evidence, and the patch lands only through your approval — landing IS the commit.

  • Sandbox. macOS Seatbelt or Linux bubblewrap confines every worker; filesystem and network access are policy, not habit.
  • Verify. skep re-runs the project's pinned verify command on a clean copy before you review — the worker's own claim is never the evidence.
  • Approve. A patch, not a promise. Workers cannot push, pull, fetch, or switch branches; no permission grant overrides that.
  • Audit. Every run, event, shell command, approval, and decision is a durable record you can inspect later.

When a worker needs more permission than policy grants, skep stops at an approval gate: approve once, deny, or approve-and-remember so similar future runs move with less friction while the ledger still records everything (docs/approvals.md).

Status

Works today Being wired up Opinions pending code
Sandboxed runs, re-verification, patch approval, full audit trail PyPI release automation (this release) Multi-operator / team use
Chat Queen (web, terminal, Telegram/Slack/Discord) with carded mutations macOS CI matrix Hosted service
Claude Code / Codex / Aider adapters + built-in and Ollama workers Closing the remember→improve loop (usage signals, recurrence counting) Ambient/self-directed learning
Schedules, digests, MCP tools, Agent Skills shelves

The command deck

The chat composer doubles as a deterministic command line: any message starting with / is parsed by the UI and executed against the same HTTP API the buttons use — the assistant's model never sees it. /help lists the deck; reads (/policy, /state, /runs, /approvals, /repos) render immediately, and mutations (/setup, /workon, /phase, /land, /approve, /deny, /schedule) show the same confirmation card a model proposal would, audited under actor operator-command. /workon <path> makes any local directory a first-class workspace: a confirmed git init + baseline commit if needed, then the same trusted-project setup a registered repo gets. The same deck works in the terminal: skep chat (see docs/cli-reference.md).

Messenger channels

Operate skep from Telegram, Slack, or Discord: enable a channel in Settings, allow-list your chat id, paste the bot token, and an allow-listed message runs the same Queen turn — with the same approval gates — as the web composer. When a channel is confirm-enabled, low-risk actions resolve inline; shell commands, policy changes, and landings are never confirmable from a messenger. See docs/how-it-works.md.

Documentation

The curated index lives at docs/README.md — start with docs/quickstart.md. Worker adapters and the custom worker contract are in docs/workers.md; messenger channels in docs/how-it-works.md; sandbox backends in docs/sandboxing.md. Decisions are recorded in docs/adr/; the post-launch roadmap in docs/post-launch.md; development and PR guide in CONTRIBUTING.md; vulnerability reports via SECURITY.md.

Website: skep.anmolnoor.com

License

MIT.

Download files

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

Source Distribution

skep-1.0.2.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

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

skep-1.0.2-py3-none-any.whl (877.5 kB view details)

Uploaded Python 3

File details

Details for the file skep-1.0.2.tar.gz.

File metadata

  • Download URL: skep-1.0.2.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for skep-1.0.2.tar.gz
Algorithm Hash digest
SHA256 04188d8cbbb9f0df1f86ccaa7bc34a0dec98b717171a0dd24df8884716e2d206
MD5 5c81978325984766c14450c0697e07f2
BLAKE2b-256 0b24cfbd30529713ee869dbcbf3528f7b8e7c48e9edb70c559e0048bb43f5185

See more details on using hashes here.

Provenance

The following attestation bundles were made for skep-1.0.2.tar.gz:

Publisher: release.yml on Anmolnoor/skep

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file skep-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: skep-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 877.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for skep-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6d1ea5d927ed308a789346d65c77c8bae060afc340626f5faa74f3a67dac30bb
MD5 a923e3324d604c1fd1bd94faaad25522
BLAKE2b-256 902f8251bf243b56e9fab3cc75f2670a269e35306674ae91548b4031a2c908f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for skep-1.0.2-py3-none-any.whl:

Publisher: release.yml on Anmolnoor/skep

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 files

1.0.1

2 files

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