Go server for Python WSGI apps. One binary. No Gunicorn. No nginx. No config.
curl -fsSL fabric.jasencarroll.com/install.sh | sh
fabric run app.py
Write a Python app. Run it with Fabric. Open your browser.
# app.py
def app(environ, start_response):
start_response("200 OK", [
("Content-Type", "text/html")
])
return [b"<h1>Hello</h1>"]
# app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<h1>Hello</h1>"
Browser → Go net/http → Unix socket → Python wsgiref → your app
Go handles HTTP, static files, and logging. Python handles your application logic. They communicate over a Unix socket using HTTP/1.1. Zero external Go dependencies. Zero external Python dependencies.
File watcher restarts your app on .py and .html changes. Crash recovery with loop detection. Dracula-themed Gin-style logs.
[fabric] fabric v0.0.1
[fabric] http://localhost:3000
[fabric] watching app.py for changes
[fabric] 2026/03/24 - 18:29:18 | 200 | 14.316ms | GET | /
[fabric] 2026/03/24 - 18:29:18 | 200 | 5.002ms | GET | /static/bone.css
[fabric] 2026/03/24 - 18:29:27 | 302 | 4.058ms | POST | /add
fabric run app.py serve on :3000 (dev mode)
fabric run app.py --prod JSON logs, no watcher
fabric run app.py --port 8080 custom port
fabric run app.py --static ./pub serve /static/ from directory
fabric run app.py --db ./data.db SQLite path (sets FABRIC_DB)
fabric version print version