rustytime is a self-hosted, WakaTime-compatible backend
for tracking your coding time that works with any* existing WakaTime plugin!
*every plugin that allows setting custom API URLs
- WakaTime Compatible β Drop-in replacement for the WakaTime API
- Fast and Memory Efficient β Built for high performance and low resource usage
- GitHub OAuth β Simple login with your GitHub account
- Data Importing β Import your existing data from Hackatime
- Observability β Built-in OpenTelemetry + Pyroscope support
- Self-Hosted β Full control over your data
- Docker (and Docker Compose)
- GitHub OAuth App (for authentication)
git clone https://github.com/ImShyMike/rustytime && cd rustytime
cp .env.example .envEdit the .env file with your GitHub OAuth credentials:
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secretdocker compose upThe app should now be now available at http://localhost:5173
# Start database + backend only
docker compose up timescaledb rustytime
# Run frontend (in another terminal)
cd frontend && npm run devConfigure your WakaTime plugin to use rustytime:
| Environment | API URL |
|---|---|
| Local | http://localhost:3000/api/v1 |
| Hosted | https://api-rustytime.shymike.dev/api/v1 |
Most plugins support setting a custom API URL in their settings. Use your rustytime API key from the settings page.
cd rustytime
cargo run # Start server
cargo run --features seed # Start with test data (10k heartbeats)
cargo test # Run tests
cargo build --release # Production buildcd frontend
npm run dev # Start dev server
npm run build # Production build
npm run check # Type check
npm run lint # Lint codeEnable tracing, metrics, and logs with OpenTelemetry:
OTEL_SERVICE_NAME=rustytime-backend
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_TRACES_EXPORTER=otlp
OTEL_METRICS_EXPORTER=otlp
OTEL_LOGS_EXPORTER=otlpEnable continuous profiling:
PYROSCOPE_SERVER_URL=http://localhost:4040
PYROSCOPE_SAMPLE_RATE=99Probably not... this was just a fun side project, if you want something that's actually production ready just use Wakapi π
| Component | Details |
|---|---|
| Backend | Rust, Axum, Diesel |
| Frontend | SvelteKit, TailwindCSS |
| Database | TimescaleDB (PostgreSQL) |
This project is licensed under the GNU AGPLv3.