Beadle
Build an AI employee without building an agent platform.
Most of any job is noticing, not thinking — scanning, comparing against a baseline, concluding nothing changed. Noticing is constant and answerable in SQL. Judgment is rare, expensive, and the only part a model is good at. Most agent systems fuse the two and pay judgment prices for noticing. Beadle keeps them apart.
pip install beadle
beadle init my-employees
cd my-employees
./beadle doctor
./beadle run example-site-watch uptime-check
Every task is the same five steps:
GATHER deterministic — SQL, an API call, a shell command. No model.
GATE plain Python. Did anything happen? If not, stop here — silently.
JUDGE one model call. Tools disabled, max-turns 1.
DELIVER gated. Silence is the correct output most days.
RECORD journal, archive.
There is no agent loop. On the production fleet this was extracted from — 21 live tasks — 10 never call a model at all, 18 can exit before the model is invoked, and the busiest task runs 144 times a day for zero tokens.
Beadle is a workspace you own and edit. beadle init fetches it and gets out of the way. Full
docs, four working example employees, and a complete worked build (including the bug hit along
the way) are in the workspace itself.
Or import it into a codebase you already have
If you already have a repo with scheduled scripts in it, you do not need a second workspace:
from beadle import lib # BEADLE_HOME=/path/to/your/repo
BEADLE_HOME decides where .env, logs/ and employees live; BEADLE_EMPLOYEES overrides the
employee root on its own, so an existing layout keeps working (lib.journal("teams/sre", ...))
without moving a single folder. Everything else is identical, because it is the same lib.py.
The workspace remains the recommended way in: reading the four example employees teaches the
shape faster than any API docs, and editing your own copy of lib.py is a feature, not a
violation. Import it when you have an existing fleet to fold in rather than a new one to start.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file beadle-0.2.0.tar.gz.
File metadata
- Download URL: beadle-0.2.0.tar.gz
- Upload date:
- Size: 14.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8afc63ae628753227efcffc392abc619d601d5f7961450d80423a62a55d313c
|
|
| MD5 |
9b95cb601261714c2fd69f516521ecac
|
|
| BLAKE2b-256 |
58169ce2ea20301a66c6160c7dace0f5ad5413f1cac86710841025ba1fdbb25d
|
File details
Details for the file beadle-0.2.0-py3-none-any.whl.
File metadata
- Download URL: beadle-0.2.0-py3-none-any.whl
- Upload date:
- Size: 15.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17c35124f2338fea1ab564d7b9000988f0704ec94fcdfe764eeee7bdc8d2ae00
|
|
| MD5 |
65a90a84265f0d8e48ed3b358a8a21db
|
|
| BLAKE2b-256 |
56580c0fba56367a2a8f7cb07e0ecc42773de6730da933452378bb304d170b42
|