The community decides which AI model gets abliterated next. Vote for your pick, the top model gets processed weekly, and the result is published on HuggingFace.
# Prerequisites: Rust 1.85+, cargo-nextest, sqlx-cli
cargo install cargo-nextest sqlx-cli
# Run locally
ADMIN_TOKEN=dev-secret make run
# Open http://localhost:8080The database is created automatically on first launch at ./leaderboard.db (configurable via DATABASE_PATH).
- Backend: Rust, Axum 0.8, SQLite via sqlx 0.9
- Frontend: Askama templates, HTMX, vanilla CSS
- Deploy: Fly.io single instance with persistent volume
- CI: GitHub Actions (clippy + nextest on push)
| Variable | Required | Default | Description |
|---|---|---|---|
ADMIN_TOKEN |
Yes | -- | Bearer token for admin endpoints (server refuses to start without it) |
DATABASE_PATH |
No | leaderboard.db |
Path to SQLite database file |
BIND_ADDR |
No | 0.0.0.0:8080 |
Server bind address |
RUST_LOG |
No | votablit=info,tower_http=info |
Log level filter |
| Method | Path | Description |
|---|---|---|
GET |
/ |
Main page (HTML) |
GET |
/api/leaderboard |
All models by vote count (JSON) |
GET |
/api/deliveries?page=1&per_page=10 |
Abliterated models, paginated (JSON) |
POST |
/api/vote |
Cast a vote |
POST |
/api/models |
Submit a model for abliteration |
Requires Authorization: Bearer <ADMIN_TOKEN>.
| Method | Path | Description |
|---|---|---|
POST |
/api/admin/models |
Create model with optional HF link |
PUT |
/api/admin/models/{id} |
Update a model's HF link |
DELETE |
/api/admin/models/{id} |
Delete a model and its votes |
DELETE |
/api/admin/deliveries/{id} |
Delete an abliterated model delivery |
DELETE |
/api/admin/prune |
Delete all zero-vote models |
POST |
/api/admin/deliver |
Record an abliterated model delivery |
Available at /admin/login. Enter the ADMIN_TOKEN to access the dashboard.
| Path | Description |
|---|---|
/admin/login |
Login form (public) |
/admin |
Dashboard — manage models and deliveries (requires auth) |
The admin dashboard provides:
- Stats overview — model count, total votes, deliveries
- Model management — view leaderboard, delete models, prune zero-vote models
- Delivery management — record new deliveries, view/delete existing ones
- Auto-refresh — model list refreshes every 10s, deliveries every 30s
Auth uses localStorage: the token is stored client-side after login and sent as
a Bearer header on every subsequent request.
- Voting: 3 votes per IP per hour, 1 vote per model per UUID
- Model submission: 1 per IP per day
- Board cap: 50 models max
make help # list all targets
make run # run locally (ADMIN_TOKEN=dev-secret)
make test # run all tests
make lint # clippy
make ci # lint + test
make sqlx-prepare # regenerate offline query cache
make docker-run # build + run in Docker
make deploy # fly deploy
make clean # remove artifactsmake test88 tests covering queries, extractors, HF validation, DB migrations, all API endpoints (including admin delivery deletion), rate limiting, auth, pagination, and edge cases.
See DEVELOPMENT.md for test architecture, security hardening details, and development workflow.