What is rustytime?
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
Features
- 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
Quick Start
Prerequisites
- Docker (and Docker Compose)
- GitHub OAuth App (for authentication)
1. Clone and Configure
&&
Edit the .env file with your GitHub OAuth credentials:
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secret
2. Run with Docker
The app should now be now available at http://localhost:5173
Alternative: Run Components Separately
# Start database + backend only
# Run frontend (in another terminal)
&&
Connect Your Editor
Configure 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.
Development
Backend (Rust)
Frontend (SvelteKit)
Observability
OpenTelemetry
Enable 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=otlp
Pyroscope Profiling
Enable continuous profiling:
PYROSCOPE_SERVER_URL=http://localhost:4040
PYROSCOPE_SAMPLE_RATE=99
Is this better than wakapi?
Probably not... this was just a fun side project, if you want something that's actually production ready just use Wakapi ðŸ˜
Architecture
| Component | Details |
|---|---|
| Backend | Rust, Axum, Diesel |
| Frontend | SvelteKit, TailwindCSS |
| Database | TimescaleDB (PostgreSQL) |
Star History
License
This project is licensed under the GNU AGPLv3.