LoadCoach
Turns FreeWeight's measurements (or declared capabilities) into routed, queued, validated inference execution with a fully explainable decision for every job.
Status: 1.0.0 — the M5 release, prepared and not yet published. Every phase of the
development plan is built: the registry and task
profiles; evidence-weighted routing with a readable explanation for every decision; synchronous and
streaming generation with validation and corrective retries; a durable priority queue with leases,
ageing, cancellation, recovery and a circuit breaker; FreeWeight evidence import; production
feedback, reliability and regression detection; a complete operator UI (dashboard, jobs, live
queue, models, reliability, system, settings); and the hardening a LAN bind needs — scopes checked
at the route and in the service, per-token rate limits, per-source queue caps, CSRF, Host
validation, body limits, content retention.
Installable once tagged. Every runtime dependency is on PyPI (weightsdb 0.2.0 and
mirrorwall 0.2.0 landed on 2026-08-30); pip install . in a clean virtualenv resolves entirely
from the index, requirements/ci.lock is hash-pinned against it, and every CI job installs from
that lock. pip install loadcoach itself waits on the v1.0.0 tag — a human decision.
Part of the Local AI Suite.
Install
pip install loadcoach # once v1.0.0 is tagged and released
loadcoach serve # web UI + API on http://127.0.0.1:8766, zero configuration
loadcoach doctor # every documented failure mode, ✓ / ! / ✗, with what to do
No provider, no GPU, no FreeWeight is required to start; each absence is a documented degraded
state. Ollama on 127.0.0.1:11434 is the default provider.
What it does
- Routes explainably. Every decision is persisted in full — candidates, per-capability scores
with their source and age, the four adjustment factors with their inputs, every rejection with
its numbers — and
/jobs/<id>answers why this model? before it shows a table. - Learns from production. Attempt outcomes and caller feedback become bounded per-model reliability statistics that deprioritize a failing model, exclude it through a circuit breaker with a re-probe, and flag a regression against the model's own history.
- Queues durably. Priority classes, ageing with a proven starvation bound, leases, cancellation within a chunk, VRAM-aware admission, residency management, and recovery after a kill that loses and duplicates nothing.
- Exposes safely. Loopback and open by default; on a LAN, tokens with cumulative scopes checked
twice, Host validation before authentication, CSRF on forms, rate limits with
Retry-After, and adoctorthat names what is wrong.
Documentation
| Read this | For |
|---|---|
| docs/quickstart.md | The first request, reading a decision, feedback |
| docs/configuration.md | Every key, generated from the settings model |
| docs/routing.md | How a model is chosen and how to change the answer |
| docs/operations.md | Health, queue controls, retention, backups, what to watch |
| docs/troubleshooting.md | Every error code and what to do |
| docs/upgrading.md | Migrations, behaviour changes, the downgrade path |
| docs/security.md | The LAN-exposure path end to end |
| docs/openapi.json | The API, as a committed OpenAPI snapshot |
| docs/apps/loadcoach/ | The specification, routing, queue and API documents (mirrored from the suite) |
Development
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pre-commit install
ruff format --check . && ruff check . && mypy src tests && lint-imports
pytest -m "not live and not performance"
pytest -m performance # every spec §15 budget, measured
pytest tests/security # Security Standards §14, item by item
Licensed under the Apache License 2.0.
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 loadcoach-1.0.0.tar.gz.
File metadata
- Download URL: loadcoach-1.0.0.tar.gz
- Upload date:
- Size: 643.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b579f72b9a165a985a99e2c5919f2ec8c19392c0579a65915f934ab1d8b3a36b
|
|
| MD5 |
b1d77d4727b3dccad937e5efb7474869
|
|
| BLAKE2b-256 |
fbce802858ba79ab95b50e259b959e171f04e4411a2508b04b5427e0b82e7647
|
Provenance
The following attestation bundles were made for loadcoach-1.0.0.tar.gz:
Publisher:
release.yml on JPKell/LoadCoach
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
loadcoach-1.0.0.tar.gz -
Subject digest:
b579f72b9a165a985a99e2c5919f2ec8c19392c0579a65915f934ab1d8b3a36b - Sigstore transparency entry: 2660118025
- Sigstore integration time:
-
Permalink:
JPKell/LoadCoach@eeef0f44da2781bdf21e8264cb7a438fc1db6354 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/JPKell
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eeef0f44da2781bdf21e8264cb7a438fc1db6354 -
Trigger Event:
push
-
Statement type:
File details
Details for the file loadcoach-1.0.0-py3-none-any.whl.
File metadata
- Download URL: loadcoach-1.0.0-py3-none-any.whl
- Upload date:
- Size: 387.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
510ba25eafed77c4632daa965248759fcb3cb58cd614701578db229e62e2b288
|
|
| MD5 |
5a3e38bd171500f6e0215ba176ec6222
|
|
| BLAKE2b-256 |
33d43909c307f7fa5a3bff64eb8d4f5f87eece2894be152c0e3a30e0857ca117
|
Provenance
The following attestation bundles were made for loadcoach-1.0.0-py3-none-any.whl:
Publisher:
release.yml on JPKell/LoadCoach
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
loadcoach-1.0.0-py3-none-any.whl -
Subject digest:
510ba25eafed77c4632daa965248759fcb3cb58cd614701578db229e62e2b288 - Sigstore transparency entry: 2660118096
- Sigstore integration time:
-
Permalink:
JPKell/LoadCoach@eeef0f44da2781bdf21e8264cb7a438fc1db6354 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/JPKell
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eeef0f44da2781bdf21e8264cb7a438fc1db6354 -
Trigger Event:
push
-
Statement type: