Core package
Project description
Fastloom – The Open Foundation for Building Event-Driven Services
Fastloom is a lightweight, batteries-included foundation for building modern backends. Define your settings, schemas, and endpoints; Fastloom wires up the rest: FastAPI, Mongo (Beanie), Rabbit (FastStream), metrics/traces/logs/errors, and more.
Think of it as the glue for your stack: web, messaging, caching, DB, observability, and integrations with best-in-class tools.
Why Fastloom
- No boilerplate: minimal scaffolding/templating; most wiring is handled inside the library.
- Composable: opt into only what you need via extras (
fastapi,rabbit,kafka,mongo,redis,mcp,celery,openai). - Pydantic-first: type-safe models, validators, and clear input/output contracts.
- Multi-tenant by design: tenant context flows through DI and storage.
- AuthN/Z via DI: OIDC token introspection and pluggable PDP (ABAC/RBAC/ReBAC) hooks.
- Event-driven ready: publish/subscribe with routing keys and health.
- Observability-native: metrics, traces, logs from day one.
- Self-hostable: production parity with a cloud/aaS setup.
Integrated Services (the platform)
Fastloom plugs into a family of self-hostable services:
- IAM → OIDC/SSO, authN/Z, RBAC/ABAC/ReBAC.
- Notify → realtime notifications, Pusher-compatible API.
- Pulse → user activity + event tracking with OpenTelemetry hooks.
- File → object storage on MinIO (S3-compatible).
- Finance, Subscription, SMS/Email, Meet, Persona → optional services you can wire in.
Each service is:
- self-hostable (Docker Compose or Helm),
- BaaS-available.
Quick start
# Install fastloom with the extras you need
poetry add fastloom -E fastapi -E mongo -E rabbit
A minimal service is two files at the project root — settings.py and app.py — plus a tenants.yaml for defaults:
# settings.py
from fastloom.db.settings import MongoSettings
from fastloom.launcher.settings import LauncherSettings
from fastloom.observability.settings import ObservabilitySettings
from fastloom.settings.general import BaseGeneralSettings
from fastloom.signals.settings import RabbitmqSettings
class Settings(
BaseGeneralSettings,
LauncherSettings,
MongoSettings,
RabbitmqSettings,
ObservabilitySettings,
): ...
# app.py
from fastapi import APIRouter
from fastloom.launcher.schemas import App
from my_service import models, signals
router = APIRouter()
@router.get("/ping")
async def ping() -> dict[str, str]:
return {"pong": "ok"}
app = App(
routes=[(router, "", "Health")],
models_module=models,
signals_module=signals,
)
# tenants.yaml
default:
ENVIRONMENT: development
PROJECT_NAME: my_service
MONGO_URI: mongodb://localhost:27017
MONGO_DATABASE: my_service
RABBIT_URI: amqp://guest:guest@localhost:5672/
Run with the bundled CLI (registered as launch via [project.scripts]):
launch
See docs/quickstart.md for a fuller walkthrough.
What you get out of the box
- App orchestrator (
fastloom.launcher)- Discovers your routes, models, signals, and healthchecks from
app.py/settings.py - Exposes settings and health endpoints (public toggle via
LauncherSettings.SETTINGS_PUBLIC)
- Discovers your routes, models, signals, and healthchecks from
- FastAPI-native
- Dependency-injected request/tenant context and guards
- Clear routing, OpenAPI, and dependency injection patterns
- Auth & Access
- DI-based guards with OIDC / OAuth2 token introspection
- Optional IAM sidecar for introspection + ACL
- Multi-tenancy
- Tenant-aware DI context across web, DB, and messaging
- Per-tenant settings endpoint backed by DB + cache, with
tenants.yamldefaults
- Database layer (MongoDB via Beanie)
- Created/updated mixins, pagination utilities, typed helpers
- Auto model discovery for DB init via
App.models_module
- Signals / Messaging (Rabbit via FastStream)
- Event-driven publish/subscribe with retries and DLX-based backoff
- Subscriber wiring and healthchecks
- Auto-streamed
BaseDocumentSignalBeanie models
- Observability
- OpenTelemetry distro + OTLP exporter, Logfire, Sentry (errors + profiling)
- I18N
- Exception handler and template utils with Babel/Jinja2
- Healthchecks
- Automatic app/DB/messaging/cache checks + system routes
- MCP
- Optional FastMCP mount with bearer auth forwarding
- Pydantic-native schemas and validators
- Schema In/Out validation for request/response contracts
- Common types and validators (
fastloom.types)
Dive deeper in the docs below.
Documentation
- Quickstart → docs/quickstart.md
- Conventions → docs/conventions.md
- Launcher & App model → docs/launcher.md
- Settings & Configs → docs/settings.md
- Tenant → docs/tenant.md
- Auth → docs/auth.md
- DB (Mongo/Beanie) → docs/db.md
- Signals (Rabbit) → docs/signals.md
- Cache (Redis) → docs/cache.md
- Healthchecks → docs/healthcheck.md
- Observability → docs/observability.md
- File storage → docs/file.md
- I18N → docs/i18n.md
- MCP → docs/mcp.md
- Testing → docs/test.md
Claude Code integration
If you build services on top of fastloom and use Claude Code, you can install the fastloom-sdk plugin. It bundles:
- Scaffolding skills —
scaffold-fastloom-service,add-fastloom-route,add-rabbit-subscriber. - Audit skill —
audit-fastloom-settingsflags misuse in yoursettings.py/tenants.yaml. - Reference skill —
fastloom-referenceships the fulldocs/so Claude can ground its answers in the canonical documentation instead of guessing from training data.
/plugin marketplace add aradng/FastLoom
/plugin install fastloom-sdk@fastloom
Skills auto-activate from context (e.g. asking "how does fastloom auth work?" triggers fastloom-reference); explicit invocation is /fastloom-sdk:<skill-name>. The plugin is opt-in per user and doesn't ship via PyPI — it's distributed through the marketplace in this same repo.
Roadmap
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 fastloom-0.4.39.tar.gz.
File metadata
- Download URL: fastloom-0.4.39.tar.gz
- Upload date:
- Size: 40.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.13.13 Linux/6.17.0-1010-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4072d5cfd60b36f769a3a672866165594043222d283c01ec3d935e8344555f5e
|
|
| MD5 |
caa5dd5379f8410d3fcc3f60a1989713
|
|
| BLAKE2b-256 |
e269fd99ccbb1e4244d0f2a06a4e8abcdcc0119100c3a03e3bd4132c96f7767a
|
File details
Details for the file fastloom-0.4.39-py3-none-any.whl.
File metadata
- Download URL: fastloom-0.4.39-py3-none-any.whl
- Upload date:
- Size: 59.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.13.13 Linux/6.17.0-1010-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
acb2ca53ad92bd5a95c6d1968b548d117bd1126da4adf6adfb4fd469fba7ce32
|
|
| MD5 |
5158f1a79c6d5f8fe5f296a04246aff2
|
|
| BLAKE2b-256 |
41290e2d243f0f795633cb3b8fcbb8e2a120ca267df6894321678dddd05ca600
|