Run Chitthi on your own infrastructure. Full control over data, keys, and email delivery. MIT licensed.
git clone https://github.com/imsks/chitthi.git
cd chitthiCreate a .env file in the project root
# App
APP_ENV=production
PORT=8080
# Database
DATABASE_URL=postgres://postgres:postgres@db:5432/chitthi?sslmode=disable
# Redis
REDIS_URL=redis://redis:6379
# Auth / Encryption
JWT_SECRET=change-me-to-a-long-random-string
ENCRYPTION_KEY=change-me-32-byte-key
# Message Queue (optional)
RABBITMQ_URL=amqp://guest:guest@localhost:5672/The fastest way to get Chitthi running
# Build and start all services (API, web dashboard, postgres, redis)
docker compose up --build -d
# Follow logs
docker compose logs -f
# Stop services
docker compose downAPI: http://localhost:8080 ยท Dashboard: http://localhost:3000
# Install golang-migrate: https://github.com/golang-migrate/migrate
migrate -path migrations \
-database "postgres://postgres:postgres@localhost:5432/chitthi?sslmode=disable" upPass your provider API key directly in the header
curl -X POST http://localhost:8080/send-email \
-H "Content-Type: application/json" \
-H "X-SendGrid-API-Key: your-sendgrid-key" \
-d '{
"from_email": "verified@yourdomain.com",
"to_email": "recipient@example.com",
"subject": "Hello from Chitthi!",
"html_content": "<h1>It works!</h1>"
}'Run the Go API and Next.js web app directly (without Docker)
go mod download
go run cmd/main.gocd web
npm install
npm run build
npm run startWhen self-hosting, you also get the web dashboard at localhost:3000. You can manage providers and create unified API keys just like Cloud users โ useful if you want a single Chitthi key instead of passing provider headers every time.