🪨 pedestal
Stop building the "basement" of your FastAPI project.
The Problem
Every new FastAPI project starts with the same 2-hour slog:
- Wiring up SQLAlchemy with async drivers
- Setting up config management
- Creating folder structures that won't become a mess
- Adding auth... then rewriting it when you change your mind
Boilerplate burnout is real.
The Solution
pedestal scaffolds production-ready FastAPI projects in 2 seconds, then lets you add features incrementally without breaking your code.
# Start with exactly what you need
pedestal init my-api --db postgres --auth jwt
# Change your mind later? No problem.
pedestal add redis
pedestal add auth-session
Why pedestal?
| Without pedestal | With pedestal |
|---|---|
| Copy-paste boilerplate from old projects | Generate clean, consistent structure instantly |
| Fear of adding features mid-project | Add/remove modules anytime safely |
| Hope your code injection doesn't break things | AST-aware code modifications (LibCST) |
| Spend hours on setup | Spend hours on features |
Installation
From PyPI
pip install pedestal
Install with uv (Faster)
uv tool install pedestal
From Source
git clone https://github.com/cybertycoon/Pedestal.git
cd pedestal
pip install -r requirements.txt
pip install -e .
Quick Start
Create a Basic Project
pedestal init my-app
cd my-app
uv run uvicorn src.main:app --reload
Create with Database & Auth
pedestal init my-api --db postgres --auth jwt --redis
Add Features Later
cd my-api
# Add Redis caching
pedestal add redis
# Add JWT authentication
pedestal add auth-jwt
Commands
pedestal init <name> — Create New Project
Scaffold a new FastAPI project with your chosen features.
# Basic project
pedestal init my-app
# With database and auth
pedestal init my-api --db postgres --auth jwt
# Full stack
pedestal init my-service --db postgres --redis --auth jwt
Options:
--db postgres|mysql|sqlite— Add database support--redis— Add Redis caching--auth jwt|session— Add authentication
pedestal add <module> — Add Features Later
Add modules to an existing project without breaking your code.
cd my-api
# Add Redis for caching
pedestal add redis
# Add JWT authentication
pedestal add auth-jwt
# Add database (if not added during init)
pedestal add postgres
pedestal remove <module> — Remove Features
Cleanly remove a module and its code.
pedestal remove redis
pedestal remove auth-jwt
pedestal list — See What's Available
Shows installed modules and available modules you can add.
pedestal list
pedestal doctor — Check Project Health
Diagnoses issues with your pedestal project.
pedestal doctor
Available Modules
- postgres/mysql/sqlite - Database with async drivers
- redis - Caching & sessions
- auth-jwt - JWT authentication
- auth-session - Session-based auth
How It Works
pedestal doesn't just copy files—it understands your Python code using AST manipulation. When you run pedestal add redis, it:
- Injects Redis connection code into your main app
- Updates
.envwith Redis URL - Adds dependencies to
pyproject.toml - Registers routes without touching your custom code
Your project stays clean, typed, and maintainable.
Project Structure
my-app/
├── src/
│ ├── __init__.py # Package initializer
│ ├── main.py # FastAPI entry
│ ├── api/
│ │ ├── __init__.py
│ │ └── v1/
│ │ ├── __init__.py
│ │ └── health.py
│ ├── core/
│ │ ├── __init__.py
│ │ ├── config.py # Pydantic settings
│ │ ├── database.py # Database connection (if DB selected)
│ │ └── registry.py # Auto-router registration
│ └── models/
│ └── __init__.py
├── tests/
│ └── __init__.py
├── .env.example # Environment template
├── .gitignore # Git ignore rules
├── .Pedestal.json # Tracks installed modules
├── pyproject.toml # Dependencies
└── README.md # Project readme
Documentation
License
MIT License
Metadata
Release files for pedestal 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pedestal-1.0.0.tar.gz | 33.7 kB | Without provenance | Details for pedestal-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pedestal-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for pedestal-1.0.0-py3-none-any.whl |
Total release size: 68.2 kB
Release files / pedestal-1.0.0.tar.gz
| Download URL | pedestal-1.0.0.tar.gz |
|---|---|
| Size | 33.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f95e7869cf451fe858a7c06ed824390102b78fa2ef6b73db2c5ec249fbad1e6
|
|
BLAKE2b-256 checksum How to use checksums |
b64016fb7c3729b4e46859c97f03467df900601ee5a2af9e47bb3b39296c78b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / pedestal-1.0.0-py3-none-any.whl
| Download URL | pedestal-1.0.0-py3-none-any.whl |
|---|---|
| Size | 34.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bf9d84084ff56131a0ede45074bb792e18bfd97d70635eea742d621662c449d6
|
|
BLAKE2b-256 checksum How to use checksums |
8997ae576be125bf0dcfbbf7b46a9ff259876bd44984b5cd48fb501eb99461b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for pedestal 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.