Single Script, Fully Reviewable
Everything lives in one Python file so you can audit behavior end to end before use.
Provision converts a plain-English server configuration into a verified execution plan, runs it on pretty much any Unixy system (Debian, RHEL, macOS, etc.), and self-repairs common failures automatically. Bring one API key (Anthropic, OpenAI, or Google). Typical provisioning runs are very cheap. Config can come from a URL or a local Markdown file on the server.
Open source. Single Python script. Read it first, then run it on fresh VMs/LXCs.
curl -sSL http://provision.sh/provision.py | python3 -
Config URL: https://example.com/my-server.md
API Key (Anthropic/Google/OpenAI): •••••••••••
Planning tasks... ✓
Executing... [14/14] ✓
Complete: 14/14 tasks succeeded
Provision is an open-source, single Python script. You can inspect the whole runtime path before execution: Markdown input, planned tasks, generated commands, verification, and repair logic. Review it first, then run it.
Everything lives in one Python file so you can audit behavior end to end before use.
The tool is meant to be transparent, inspectable, and easy to validate in your own environment.
Define setup in Markdown using sections and bullets. No rigid schema required.
Use a hosted Markdown config URL or point Provision at a local config file already on the server.
Works on pretty much any Unixy distribution (Debian, Ubuntu, RHEL, CentOS, macOS, etc).
All you need is a valid Anthropic, Google, or OpenAI API key.
The runtime flow is deterministic: gather input, plan discrete tasks, execute safely, verify, repair on failure, and only ask for help when absolutely needed.
Bootstrap Python and dependencies, then collect config source (URL or local file) and API key.
Load Markdown config and prompt for {{VARIABLE}} placeholders.
Send config to the planner prompt to produce an ordered JSON checklist.
Generate non-interactive commands for each task and execute with timeout controls.
Run verification command; if failure occurs, invoke self-repair up to 3 attempts.
Summarize all actions, logs, and final success status in a clear report.
Provision accepts straightforward Markdown specs. Full example shown below, or open:
rs_config.md
# Robert's standard setup
## System
- Set the timezone to America/Los_Angeles
- Ensure the system is fully updated
## Packages
- Install: openssh-server, joe, htop, curl, wget, git, fish, cifs_utils
## Users
- Create user rcs1000 with password {{secret:RCS_PASSWORD}}
- Add rcs1000 to the sudo group
- Set rcs1000's default shell to fish
## SSH Configuration
- Disable root login via SSH
- Allow password login
- Restart the SSH service
## Custom
- Install Tailscale using the official Tailscale apt repository
- Do not start the Tailscale service, as it requires logging in
- Install uv using the official uv repository
Provision is intended for fresh installs on trusted infrastructure. It includes practical controls like
preview mode, bounded retries, explicit user escalation, and a fully reviewable single-script runtime:
provision.py.
Provision is one Python file. Read it end-to-end before execution:
provision.py.
--plan shows intended commands before any changes are executed.
Self-repair is capped (3 attempts) to prevent runaway loops and hidden repeated failures.
Secret placeholders can remain tokenized in LLM prompts and be substituted only at execution time.
Step 1 is to read the script. Step 2 is to run it as root on a fresh system, provide a config URL or local file path, and enter an Anthropic/Google/OpenAI API key.
curl -sSL http://provision.sh/provision.py | python3 -
# Optional flags
# --config URL_OR_LOCAL_PATH --provider anthropic|google|openai --plan --log /var/log/provision.log --verbose
Recommended: run --plan first, review the output, then execute.