Skip to main content

Govern AI coding agents with sandboxing, verification, approvals, and audit trails.

Project description

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

pip install skep

Or uvx skep to try it without installing. 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.

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

skep-1.0.1.tar.gz (1.6 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.1-py3-none-any.whl (869.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: skep-1.0.1.tar.gz
  • Upload date:
  • Size: 1.6 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.1.tar.gz
Algorithm Hash digest
SHA256 fa444bad04242efc43b943d1e554260b013c9de8d64672a0a7e648cc89e63a42
MD5 b88d4d694fcba0560b327f60c8e523a7
BLAKE2b-256 515ec93ee9a46ed999b839316c0f98882677118cc636f61bcac8416ac0c57967

See more details on using hashes here.

Provenance

The following attestation bundles were made for skep-1.0.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: skep-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 869.1 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f656806c2c750da10337e9d484a96d2ae99619bb90e44e18dab36ee569e153fa
MD5 d5ae3d7417506f39d4bbcd855d32b506
BLAKE2b-256 2724ec1898a7c93f62e90ef967b63758aad2092cd756e13b220b4a6b37f5cd29

See more details on using hashes here.

Provenance

The following attestation bundles were made for skep-1.0.1-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.

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