SCRIBE
Smart logging for humans. Single binary. Zero dependencies.
Quick Start β’
Features β’
Performance β’
API β’
CLI β’
Docker
What is SCRIBE?
SCRIBE is a self-hosted logging solution designed for indie developers, startups, and small teams who want powerful logging without the complexity.
./scribe serve
# That's it. Visit http://localhost:8080
π Quick Start
One-liner Install
# Linux/macOS
curl -fsSL https://raw.githubusercontent.com/mx-scribe/scribe/main/install.sh | bash
Manual Download
# Extract and run
tar -xzf scribe-*.tar.gz
./scribe serve
β¨ Features
|
Feature |
Description |
| π¦ |
Single Binary |
~15MB, includes web dashboard, zero dependencies |
| ποΈ |
SQLite Storage |
No external database, data in ~/.scribe/scribe.db |
| π§ |
Smart Patterns |
Auto-detect severity and source from log content |
| π |
Real-time Dashboard |
Beautiful UI with live SSE updates |
| π |
Dashboard Filters |
Filter by severity, source, date, and search |
| β¨οΈ |
CLI & HTTP API |
Send logs from terminal or any language |
| π€ |
Export |
JSON and CSV export |
| π |
Works Offline |
No cloud, no internet, fully self-hosted |
| π |
Easy Updates |
Replace binary, keep your data |
We believe in honest metrics. Here's exactly what SCRIBE can handle.
Throughput
| Rate |
Status |
Errors |
p95 Latency |
Daily Capacity |
| 100/s |
β
Stable |
0% |
1ms |
8.6M logs |
| 150/s |
β
Stable |
0% |
1ms |
12.9M logs |
| 200/s |
β οΈ Degraded |
~10% |
1ms |
- |
| 500/s |
β Overload |
~60% |
1ms |
- |
Resources
| Metric |
Value |
| π¦ Binary size |
~15 MB |
| πΎ Memory (idle) |
~2 MB |
| πΎ Memory (load) |
~3 MB |
| πΏ Storage/log |
~370 bytes |
Bottom line: SCRIBE handles 12.9 million logs per day on a single server. For most indie projects and startups, that's more than enough.
β¨οΈ CLI
Server
scribe serve # Start on :8080
scribe serve --port 3000 # Custom port
scribe serve --db /data/logs.db # Custom database
Send Logs
scribe log "User signed up"
scribe log "Payment failed" --severity error
scribe log "Slow query" --severity warning --source postgresql
scribe log "Order #123" --body '{"total":99.99}'
Query Logs
scribe logs # List recent
scribe logs --severity error # Filter by severity
scribe logs --limit 100 # Limit results
scribe logs --format json # JSON output
Other Commands
scribe stats # Show statistics
scribe faker # Generate test logs
scribe faker --stress --rate 100 # Stress test
scribe version # Show version
π API
Send Logs
# Minimal (severity auto-detected from content)
curl -X POST http://localhost:8080/api/logs \
-H "Content-Type: application/json" \
-d '{"header":{"title":"User logged in"}}'
# Full example
curl -X POST http://localhost:8080/api/logs \
-H "Content-Type: application/json" \
-d '{
"header": {
"title": "Payment processed",
"severity": "success",
"source": "payment-service"
},
"body": {
"amount": 99.99,
"currency": "EUR"
}
}'
Query & Export
# List logs
GET /api/logs
GET /api/logs?severity=error&limit=50
GET /api/logs?q=timeout
# Single log
GET /api/logs/{id}
# Statistics
GET /api/stats
# Export
GET /api/export/json
GET /api/export/csv
# Real-time (SSE)
GET /api/events
# Health
GET /health
GET /metrics
π§ Smart Pattern Matching
SCRIBE automatically detects severity from log content:
| Pattern |
Detected Severity |
HTTP 500, HTTP 502 |
π΄ error |
HTTP 400, HTTP 404 |
π‘ warning |
panic, fatal, critical |
π΄ critical |
error, failed, crash |
π΄ error |
warning, deprecated |
π‘ warning |
success, completed |
π’ success |
SQL injection, brute force |
π΄ critical |
Override anytime by specifying severity explicitly.
π³ Docker
FROM alpine:latest
COPY scribe /usr/local/bin/
VOLUME /data
EXPOSE 8080
CMD ["scribe", "serve", "--db", "/data/scribe.db"]
docker run -d -p 8080:8080 -v scribe-data:/data scribe
βοΈ Configuration
Config File
Loaded from (in order):
--config flag
./scribe.json
~/.scribe/config.json
/etc/scribe/config.json
{
"server": {
"port": 8080,
"host": "0.0.0.0"
},
"database": {
"path": "/data/scribe.db"
}
}
Environment Variables
SCRIBE_PORT=8080
SCRIBE_HOST=0.0.0.0
SCRIBE_DB_PATH=/data/scribe.db
π Updating
Data is stored separately from the binary. Updates are simple:
# Download new version
curl -L https://github.com/mx-scribe/scribe/releases/latest/download/scribe-linux-amd64.tar.gz | tar xz
# Restart
./scribe serve
Your logs in ~/.scribe/scribe.db are preserved.
π Comparison
|
SCRIBE |
Loki |
ELK Stack |
| Setup |
1 min |
Hours |
Days |
| Dependencies |
0 |
Many |
Many |
| Memory |
2-3 MB |
500+ MB |
2+ GB |
| Dashboard |
β
Built-in |
β Need Grafana |
β
Kibana |
| Self-contained |
β
|
β |
β |
SCRIBE isn't trying to replace enterprise logging. It's for developers who want something that just works.
π License
MIT License - see LICENSE
SCRIBE β Built with β€οΈ by Mendex
Logging for developers who just want things to work.