SkillAgentSearch skills...

Fastapi Agent Blueprint

FastAPI backend blueprint for AI agent apps: DDD, SQLAlchemy, Taskiq, admin UI, RAG infra, and Claude/Codex collaboration harness.

Install / Use

npx skills add Mr-DooSun/fastapi-agent-blueprint

Installs into whichever agent you are using.

README

<p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/logo-dark.png"> <source media="(prefers-color-scheme: light)" srcset="docs/assets/logo-light.png"> <img alt="FastAPI Agent Blueprint" src="docs/assets/logo-light.png" width="200"> </picture> </p> <h1 align="center">FastAPI Agent Blueprint</h1> <p align="center"> <a href="https://github.com/Mr-DooSun/fastapi-agent-blueprint/actions/workflows/ci.yml"><img src="https://github.com/Mr-DooSun/fastapi-agent-blueprint/actions/workflows/ci.yml/badge.svg" alt="CI"></a> <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/Python-3.12.9+-blue.svg" alt="Python"></a> <a href="https://fastapi.tiangolo.com"><img src="https://img.shields.io/badge/FastAPI-0.115+-green.svg" alt="FastAPI"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License"></a> <a href="https://github.com/astral-sh/ruff"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff"></a> <a href="https://github.com/Mr-DooSun/fastapi-agent-blueprint/stargazers"><img src="https://img.shields.io/github/stars/Mr-DooSun/fastapi-agent-blueprint?style=social" alt="GitHub Stars"></a> </p> <p align="center"> <b>FastAPI backend blueprint for AI agent applications.</b><br> DDD domains · SQLAlchemy/Alembic · Taskiq workers · admin UI · RAG infrastructure · Claude/Codex collaboration harness. </p> <p align="center"> <a href="#try-it-in-60-seconds">60s Quickstart</a> · <a href="#why-this-blueprint">Why</a> · <a href="#ai-collaboration-harness">AI Collaboration</a> · <a href="#how-it-compares">Comparison</a> · <a href="#architecture-at-a-glance">Architecture</a> · <a href="docs/README.ko.md">한국어</a> </p> <p align="center"> <a href="https://github.com/Mr-DooSun/fastapi-agent-blueprint/generate"> <img src="https://img.shields.io/badge/-Use%20this%20template-2ea44f?style=for-the-badge" alt="Use this template"> </a> </p>

Try it in 60 seconds

No Docker, no PostgreSQL, no cloud credentials — SQLite + in-memory broker.

git clone https://github.com/Mr-DooSun/fastapi-agent-blueprint.git
cd fastapi-agent-blueprint
make setup        # one-time: venv + deps via uv
make quickstart   # FastAPI on :8001, SQLite schema auto-created

In a second terminal, make demo exercises the auth + user domains across both token realms (customer register → seed a demo admin → admin login → user CRUD → refresh → logout) and make demo-rag exercises the docs domain (end-to-end RAG: upload → chunk → embed → retrieve → answer with citations, zero credentials):

→ Health check
{ "status": "ok" }

→ Register
{ "success": true, "data": { "accessToken": "...", "refreshToken": "..." } }

→ Create a user
{ "success": true, "data": { "id": 2, "username": "bob", ... } }

→ List users (page=1, pageSize=10)
{ "data": [ { "id": 1, "username": "alice" }, { "id": 2, "username": "bob" } ],
  "pagination": { "currentPage": 1, "totalItems": 2, "hasNext": false } }

→ Update the user    → Delete the user
→ Refresh token      → Logout
→ Done. API docs: http://127.0.0.1:8001/docs

Platform in action

Clone → quickstart → CRUD → JWT auth → background worker → RAG query:

make quickstart && make demo && make demo-rag
<!-- Regenerate with `make demo-gif` whenever scripts/demo.sh changes. -->

API demo: health check → register → JWT → admin realm → user CRUD

Full integration walkthrough (auth · RBAC · worker · admin · RAG · OTEL): docs/canonical-demo.md


Why this blueprint

<table> <tr> <td width="60%" valign="top">

Production rigor

  • DDD layers (4-tier) — Interface · Domain · Infrastructure · Application, enforced by pre-commit import guard
  • Zero-boilerplate CRUD — 8 async methods via BaseService + BaseRepository, paginated list with QueryFilter included
  • Auto domain discovery — drop a folder into src/{name}/, it auto-registers. No container edits, no bootstrap edits
  • Agent backend surfaces — REST API, async worker, admin UI, and a planned MCP interface over the same domain logic
  • Pluggable infra — PostgreSQL / MySQL / SQLite · DynamoDB · S3 / MinIO · S3 Vectors · SQS / RabbitMQ · OpenAI / Bedrock
  • OpenTelemetry[otel] extra, OTEL_ENABLED env flag, Jaeger/Tempo/Phoenix recipe
  • Error notifications — optional Slack/Discord webhook alerts from the exception handlers and from worker task failures, severity + cooldown gated, with optional per-severity channel routing (runbook)
  • JWT + RBAC — HS256 auth domain, DB-backed refresh rotation, User.role admin gating
  • AI Usage Ledger — per-call LLM accounting, ai_usage domain, admin + API surfaces
  • Taskiq smart retry — task-scoped structured logging, permanent-aware retry policy
  • Frontend handoff — OpenAPI download, Bruno/Postman/Hey API/Orval recipes, JWT flow, camelCase contract (docs/frontend-handoff.md)
</td> <td width="40%" valign="top">

AI-assisted acceleration

  • Claude/Codex collaboration harness — shared AGENTS.md, mirrored skills, and hook-backed workflow reminders
  • /new-domain order or $new-domain order scaffolds 44 files (15 source + 25 __init__.py + 4 tests) in one command
  • 15 Claude Code + 15 Codex CLI skills sharing the same architecture and review rules
  • AI-assisted development (AIDD) — humans keep product judgment; agents follow repeatable domain, test, review, and drift-check workflows
  • Full setup: docs/ai-development.md
  • Manual path: docs/tutorial/first-domain.md (Path B)

/new-domain order → 44 files scaffolded → tests pass

Works as a normal FastAPI blueprint. With Claude Code or Codex CLI, the same production workflow becomes AI-assisted and repeatable.

</td> </tr> </table>

AI collaboration harness

Most templates stop at generated files. This blueprint also ships the collaboration layer that keeps AI coding agents useful after the first scaffold:

  • Shared source of truthAGENTS.md defines the architecture, DTO rules, logging rules, security constraints, and default coding flow.
  • Claude Code + Codex parity — tool-specific harnesses point back to the same shared rules instead of drifting into separate playbooks.
  • Repo-local skills — domain scaffolding, API work, admin pages, worker tasks, migrations, tests, architecture review, security review, and guideline sync.
  • Governed changes — pre-commit checks, import guards, language policy, and review workflows catch architecture drift before it becomes team debt.

The result is a backend starter that can be used by hand, then accelerated by AI tools without asking every contributor to remember the whole architecture from scratch.


How it compares

| Feature | FastAPI Agent Blueprint | tiangolo/full-stack | s3rius/template | teamhide/boilerplate | |---|:-:|:-:|:-:|:-:| | Zero-boilerplate CRUD (8 methods) | Yes | No | No | No | | Auto domain discovery | Yes | No | No | No | | Architecture enforcement (pre-commit) | Yes | No | No | No | | AI workflow skills (Claude + Codex) | 15 + 15 | 0 | 0 | 0 | | Vector infrastructure (S3 Vectors) | Yes | No | No | No | | Multi-interface (API + Worker + Admin + MCP) | 3 + 1 planned | 2 | 1 | 1 | | Architecture Decision Records | 29 active · 30 archived | 0 | 0 | 0 | | Type-safe generics across layers | Yes | Partial | Partial | No | | IoC container DI | Yes | No | No | No |

Full comparison including Litestar, Robyn, cookiecutter, and adoption paths: docs/comparison.md


AI use case: document QA (src/docs/)

The blueprint ships a worked RAG example — upload documents, ask questions, get structured answers with citations. It proves the building blocks (vectors, embeddings, LLM agent, worker, admin) compose end-to-end.

make quickstart   # terminal 1
make demo-rag     # terminal 2 — seeds 3 docs, runs a query
POST /v1/docs/documents   # chunk → embed → upsert
POST /v1/docs/query       # embed question → top-k retrieval → agent answer
GET  /admin/docs          # browse + query playground

Under the hood, the RAG orchestration is a reusable _core pattern (ADR 040), not a domain. src/docs/ is one consumer; future AI domains (support_bot, product_qa) inject the same RagPipeline instead of duplicating chunking + retrieval code:

# src/_core/domain/services/rag_pipeline.py
class RagPipeline(Generic[TChunk]):
    async def answer(self, question, top_k=5, filters=None) -> tuple[QueryAnswer, list[TChunk]]:
        ...  # embed → vector_store.search → answer_agent.answer

Zero-config path uses a stub embedder (keyword bag-of-words) and stub answer agent (templated response from retrieved chunks), both in src/_core/infrastructure/rag/. Set EMBEDDING_PROVIDER + LLM_PROVIDER in .env to swap in real providers — the pipeline is the same.


Architecture at a glance

Every domain

Related Skills

View on GitHub
GitHub Stars23
CategoryDevelopment
Updated2d ago
Forks9

Languages

Python

Security Score

95/100

Audited on Aug 6, 2026

No findings