Skip to main content

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 isolated model call. It sees only the prompt produced by GATHER.
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.

The judge uses a logged-in Claude Code or Codex CLI subscription, selected with BEADLE_LLM_PROVIDER=claude|codex; an optional BEADLE_LLM_FALLBACK can use the other login on auth or quota failure. No model API key is required.

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 scheduler and the fleet status come with it. From the repo root (or with BEADLE_HOME set):

beadle dispatch --dry-run      # what in schedule.toml is due now; `beadle dispatch` runs the daemon
beadle dispatch --fleets       # every fleet in ~/.config/beadle/fleets.toml, one daemon
beadle status --json           # the whole fleet as one read-only JSON document

A fleet.toml at the root names the fleet, its companies and its employees_root; employees namespaced company/employee read <company>/company.md above their role.

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.

MIT · https://github.com/agentropicai/beadle

Metadata

Release files for beadle 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for beadle 0.5.0
File Size Uploaded
beadle-0.5.0.tar.gz 26.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for beadle 0.5.0
File Interpreter ABI Platform
beadle-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 55.6 kB

Release files / beadle-0.5.0.tar.gz

Download URL beadle-0.5.0.tar.gz
Size 26.5 kB
Tags Source
SHA-256 checksum
How to use checksums
7ae86c2d388354b13a4231925564413db4e2218c16406dcc4bf35d0baf47238d
BLAKE2b-256 checksum
How to use checksums
a8ffb155b26d7e7dfc24304fa360261ae7d1e538495809a40a95312eb3b85bff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release files / beadle-0.5.0-py3-none-any.whl

Download URL beadle-0.5.0-py3-none-any.whl
Size 29.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e9c7ad67f3df8acae8e7a6c66c038ec15d138e754a00f1c93e31a089b1bfdf7e
BLAKE2b-256 checksum
How to use checksums
19b69faca86ea82559dc454d85272f61baec2ccd5305db095bdc0650eb0a2b26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release history Release notifications | RSS feed

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release 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