ws: Your memory, skills and rules, in any AI
ws turns one policy.toml into each AI tool's own config, answers the tools' hooks, and runs headless jobs that leave
one complete record each. Your memory, skills and rules live in plain files that you own, so you can change tool or
model without starting again.
ws is a small command-line toolkit. The core is Python 3.11 or newer and the standard library only. It runs on macOS and Linux. On Windows it runs inside WSL2.
Install
Run the installer. It checks the machine, installs the ws command with uv or pipx, and runs a smoke test.
curl -fsSL https://raw.githubusercontent.com/Michael-A-Fry/ws/main/install.sh | bash
Or install the package yourself:
pipx install ws-aitoolkit
For other ways to install, including a pinned version, see Install ws.
First command
ws doctor
ws doctor prints one line per check, each with a stable ID. WS0xx checks cover the machine and WS1xx checks cover
the roles you set up (runner, model, budget, secrets, memory, notes, scheduler, notify, backup, usage).
| Status | Meaning |
|---|---|
ok |
The check passed. |
warn |
It works, but something weakens it. Read the fix: line. |
unconfigured |
You haven't set this up yet. This is normal on a new install. |
fail |
Something is wrong. Read the fix: line. |
Doctor exits with 1 while anything needs doing, so a new install exits with 1. Run ws init to answer the three setup
questions, or ws setup to go step by step. ws doctor --json gives the same report for scripts.
To follow a whole first session, see the first-run tutorial.
Skills
ws install puts six skills in your runner's skills folder: align, checkpoint, taste-gate, dataviz, resume
and ship. ws skills lists them per runner. A skill you already have under one of those names stays as it is.
To use ws's version of a name you already have, run ws skills adopt NAME. Yours moves to
$WS_HOME/backups/skills/<runner>/ and ws installs its own. ws skills restore NAME takes ws's copy out and moves yours
back.
Verify
Check which build you have:
ws version --json
The output has version, git_sha, dirty, build_date, python, install_path and install_source. Each release
carries a checksum, a build provenance attestation, a Sigstore bundle and an SBOM. To check them, see
Verify a release.
Troubleshooting
| Problem | Fix |
|---|---|
| Neither uv nor pipx is installed | Install one: curl -LsSf https://astral.sh/uv/install.sh | sh. The installer prints the line for your OS. |
| Python is older than 3.11 | Use uv, which fetches a current Python for you. |
| Native Windows | ws runs inside WSL2. Run wsl --install -d Ubuntu-24.04, then run the installer in that shell. |
ws isn't found after the install |
Run uv tool update-shell or pipx ensurepath, then open a new terminal. |
For more, see Troubleshoot ws.
Documentation
Start with the documentation map. Pages are grouped as tutorials, how-to guides, explanation and reference (the Diátaxis split).
| Page | What it covers |
|---|---|
| Usage | Every command, one task each |
| First run | Install, check, set up and run a first task |
| Install | Install options and pinning a version |
| Verify a release | Checksum, attestation, Sigstore bundle |
| Upgrade and uninstall | Move to a new version, or remove ws |
| Troubleshoot | Install and doctor failures |
| Use the gate | Turn the policy into each runner's rules |
| Use the wall | Run a runner inside the sandbox |
| Approve a command | Give a refused call a single-use yes |
| Store a secret | Keep a key where agents can't read it |
| Apply the Rule of Two | Limit what one session can combine |
| Set a budget | Cap spend per month |
| Send drafts only | Let agents draft, never send |
| Run an eval | Compare two setups on your own tasks |
| The gate | How policy becomes enforcement |
| The wall | What the sandbox stops and what it doesn't |
| Approvals | Why an approval is bound and single-use |
| The broker | Why agents never see a secret |
| The Rule of Two | The design rule behind the policy |
| Budget | How caps are counted |
| Draft-only sending | Why ws never sends for you |
| Known limits | What ws doesn't protect against yet |
| Write-up 1 | The design and what we measured |
| CLI reference | Every command and flag |
| Doctor checks | Every check ID |
| Policy reference | Every policy.toml key |
| Eval reference | Task format, graders, metrics |
| Lab reference | The lab machine and the launch matrix |
ws version --json |
The fields of the version report |
For contributors: CONTRIBUTING.md, SECURITY.md, SUPPORT.md, CHANGELOG.md and AGENTS.md.
Status
ws is pre-1.0. Commands, JSON output and policy.toml keys can still change between releases, and the
CHANGELOG says when they do. Doctor IDs never change meaning once released. Read
Known limits before you rely on the wall or the gate.
Licence
ws is Apache-2.0. Contributions need the CLA, signed through a bot on your first pull request.
Metadata
Release files for ws-aitoolkit 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ws_aitoolkit-0.1.2.tar.gz | 344.0 kB | With provenance | Details for ws_aitoolkit-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ws_aitoolkit-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for ws_aitoolkit-0.1.2-py3-none-any.whl |
Total release size: 729.9 kB
Release files / ws_aitoolkit-0.1.2.tar.gz
| Download URL | ws_aitoolkit-0.1.2.tar.gz |
|---|---|
| Size | 344.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c0326e600c8c39b4aae8c5e01f6892bc14ea1ec6bf014c682f47e0dccc88571e
|
|
BLAKE2b-256 checksum How to use checksums |
830d3b5ec68a10b3c350ecb6346ba6fe5924fc4a7d9ec1858fe32edad45ab74b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / ws_aitoolkit-0.1.2-py3-none-any.whl
| Download URL | ws_aitoolkit-0.1.2-py3-none-any.whl |
|---|---|
| Size | 385.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f2df0d60e7a863a35a777597ff5ddd20380936e3932e971dd8d34d22d982c18c
|
|
BLAKE2b-256 checksum How to use checksums |
d46ade6814c72e38a3552a20c47731dacdd53f69480141484850263660ca388f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logSecurity for ws-aitoolkit 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for ws_aitoolkit-0.1.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.