Scaffold production FastAPI services from YAML
Project description
feathers
Scaffold production FastAPI services from one YAML file, in under 10 seconds.
PyPI • Why • Architecture • Demo Script
What it does
feathers is a CLI that takes a YAML schema and emits an opinionated, MVC-structured
FastAPI service with tests, migrations, observability, CI, and Docker — all wired up.
Unlike a cookiecutter, feathers add rewrites the AST of an existing service so you
can keep regenerating without clobbering hand-written code.
The unique angle
- AST-aware incremental mode (libcst) —
feathers add endpointslots new code into existing files without touching a line you wrote - Hand-written fence markers — anything between
# feathers: begin hand-writtenand# feathers: end hand-writtenis never rewritten - One-file schema — YAML defines models, endpoints, observability, and deploy target
- Typed everything — Pydantic v2 validates the schema before a single file is written
- Ships the platform middleware — every generated service gets
/health,/version,/metrics, request ID propagation, and JWT validation out of the box
Quick start
pip install feathers-cli
feathers new --schema demos/users.yaml --name hello-users --out .
cd hello-users && make run
# → http://localhost:8000/docs
Benchmarks
| Metric | Target |
|---|---|
Generated GET /users/{id} sustained throughput |
≥10,000 req/s |
Generated GET /users/{id} p99 latency |
<30 ms |
Benchmarks run via feathers bench (Locust) against a local Postgres.
Architecture
See docs/ARCHITECTURE.md.
Tech stack
| Concern | Choice |
|---|---|
| CLI framework | Typer |
| Template engine | Jinja2 |
| YAML validation | Pydantic v2 |
| AST rewriting | libcst |
| Package manager | uv |
Deployment
- PyPI: published on
v*tag push via GitHub Actions - Generated services: deploy to Render, Fly.io, or Docker (target chosen in schema)
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
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 feathers_cli-0.1.0.tar.gz.
File metadata
- Download URL: feathers_cli-0.1.0.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f68f3c7aa6bb929f6486f52109b1c9a6130d1de0c0c8ba743afcbc5b54eeaae
|
|
| MD5 |
aa92635e993eeac1157546172c7416ca
|
|
| BLAKE2b-256 |
ece967c43f243ced30836d862a6d4cac8e58f4d524c7c22a2dbe2f4a273b9fa7
|
File details
Details for the file feathers_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: feathers_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb5214d5a2041692c7840b26137d23822aa35eac08e8e86618bdd0267667e7e3
|
|
| MD5 |
6d3e346e7be9210b56806ed5ceec67b2
|
|
| BLAKE2b-256 |
6e0d6744b7c108b7e272e24a491b198921b299f9598a65b2a53da58dea524975
|