Theologically governed, autonomous YouTube media operation for youtube.com/@gospelinaction.
Phase 1 + Phase 2 (in progress). Constitution, policy packs, audit engine, publication gate, workflow state machine, provider interfaces, budget gate. No authorized LLM calls, no asset generation, no YouTube writes.
What is real right now
| Capability | State |
|---|---|
Versioned Theological Constitution (1.0.2, hashed) |
working |
| Per-agent policy packs (role + document-kind scoped) | working |
| Deterministic audit engine (15 prohibitions, 17 validation rules) | working |
| Scripture reference + quotation verification against the BSB corpus | working, fails closed when no corpus is installed; 66 books, 1,189 chapters, 31,086 verses |
| Publication gate wired into the state machine | working |
| Workflow statuses, resumable transitions, idempotency | working |
| Provider interfaces (text, voice, image, video, music) + registry | working; manual adapters operational, DeepSeek adapter written but inactive |
| Budget gate (zero authorized spend) | working; PAID calls refused, unknown cost treated as possible charge |
Cost ledger (provider_usage, append-only) |
working |
| Dashboard (8 modules) | shell; governance and providers views are live |
| YouTube OAuth / upload | not built (Phase 5) |
| Agents (LLM execution) | contracts + registry only (Phase 3) |
| Asset generation | not built (Phase 4) — no model downloaded |
Quick start
cd services/api
python3 -m venv .venv && ./.venv/bin/pip install -e ".[dev]"
./.venv/bin/pytest -q # 81 tests
./.venv/bin/uvicorn app.main:app --reload --port 8000
cd web
npm install
npm run dev # http://localhost:3000
Open API docs at http://localhost:8000/docs.
Try the gate
curl -s localhost:8000/health
curl -s -X POST localhost:8000/api/v1/governance/evaluate \
-H 'content-type: application/json' \
-d '{
"doc_kind": "script",
"agent_role": "scriptwriting",
"content": "God needed to be paid before He could forgive.",
"attestations": []
}'
Expect THEOLOGY_CONFLICT, publishable: false, with DET-PRO-01a as the evidence.
Layout
| Path | Purpose |
|---|---|
constitution/versions/1.0.1.json |
the governing document (immutable) |
services/api/app/theology/ |
audit engine, detectors, scripture verification |
services/api/app/constitution/ |
loader + per-agent policy pack renderer |
services/api/app/workflow/ |
status machine + publication gate |
services/api/app/agents/ |
task/result contracts, eleven-agent registry |
web/ |
Next.js dashboard shell |
docs/ |
architecture, database, agent protocol, YouTube integration, costs, hermeneutics method |
ROADMAP.md |
phases, acceptance criteria, open decisions |
Non-negotiables encoded in code
- Agents never run without a hashed policy pack.
- Unverified Scripture blocks publication. So does a missing licensed corpus.
- Dispensational and replacement-theology claims are blockers at every audit point, including SEO.
- The audit engine may downgrade an agent's claimed status; it can never upgrade it.
- Public publishing is disabled by default and the state machine refuses to reach
READY_TO_PUBLISHwithout a passing audit. - Human overrides are recorded, never silent.
Environment
Copy .env.example to .env. No credential is ever committed, logged, or passed to a prompt.
What is required before any video can pass
- A licensed Bible translation installed at
data/biblewithmanifest.json(seedata/bible/README.md). - A provider stack for text, voice, image, video (Phase 3–4).
- A Google Cloud OAuth client for the channel (Phase 5).
Source
Rendered from README.md at build time. Return to the
documentation index.