Quick Start | Website | Demo | Discord
A modern, self-hosted project management platform that gets out of your way.
We built Kaneo because existing project management tools either feel bloated with features you'll never use, or they're too simple to handle real work. Kaneo finds the sweet spotβpowerful enough for complex projects, simple enough that you'll actually want to use it.
What makes it different:
- Clean interface that focuses on your work, not the tool
- Self-hosted so your data stays yours
- Actually fast because we care about performance
- Open source and free forever
The fastest way to try Kaneo is with Docker Compose. This sets up the API, web interface, and PostgreSQL database:
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: kaneo
POSTGRES_USER: kaneo_user
POSTGRES_PASSWORD: kaneo_password
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
backend:
image: ghcr.io/usekaneo/api:latest
environment:
JWT_ACCESS: "your-secret-key-here"
DATABASE_URL: "postgresql://kaneo_user:kaneo_password@postgres:5432/kaneo"
ports:
- 1337:1337
depends_on:
- postgres
restart: unless-stopped
frontend:
image: ghcr.io/usekaneo/web:latest
environment:
KANEO_API_URL: "http://localhost:1337"
ports:
- 5173:5173
depends_on:
- backend
restart: unless-stopped
volumes:
postgres_data:
Save this as compose.yml
, run docker compose up -d
, and open http://localhost:5173.
Quick tip: Change
JWT_ACCESS
to something secure in production. This is used to sign authentication tokens.
For development, see our Environment Setup Guide for detailed instructions on configuring environment variables and troubleshooting common issues like CORS problems.
Variable | What it does | Default |
---|---|---|
KANEO_API_URL |
Where the web app finds the API | Required |
JWT_ACCESS |
Secret key for user authentication | Required |
DATABASE_URL |
PostgreSQL connection string | Required |
DISABLE_REGISTRATION |
Block new user signups | true |
Kaneo uses PostgreSQL for data storage. The Docker Compose setup above handles this automatically, but if you're running Kaneo outside of Docker, or if you are using an external postgres database, you'll need to:
- Install PostgreSQL (version 12 or higher)
- Create a database and user:
CREATE DATABASE kaneo; CREATE USER kaneo_user WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE kaneo TO kaneo_user; \c kaneo; GRANT USAGE ON SCHEMA public TO kaneo_user; GRANT CREATE ON SCHEMA public TO kaneo_user; ALTER SCHEMA public OWNER TO kaneo_user;
- Set the DATABASE_URL environment variable:
export DATABASE_URL="postgresql://kaneo_user:your_password@localhost:5432/kaneo"
If you're running Kubernetes, we have a Helm chart that handles the complexity:
# Clone the repo
git clone https://github.com/usekaneo/kaneo.git
cd kaneo
# Install with Helm
helm install kaneo ./charts/kaneo --namespace kaneo --create-namespace
# Access locally
kubectl port-forward svc/kaneo-web 5173:5173 -n kaneo
Open http://localhost:5173 and you're good to go.
For real deployments, you'll want proper ingress:
helm install kaneo ./charts/kaneo \
--namespace kaneo \
--create-namespace \
--set ingress.enabled=true \
--set ingress.className=nginx \
--set "ingress.hosts[0].host=pm.yourcompany.com"
Check the Helm chart docs for TLS setup, cert-manager integration, and other production considerations.
Want to hack on Kaneo? See our Environment Setup Guide for detailed instructions on configuring environment variables and troubleshooting common issues like CORS problems.
Quick start:
# Clone and install dependencies
git clone https://github.com/usekaneo/kaneo.git
cd kaneo
pnpm install
# Copy environment files
cp apps/api/.env.sample apps/api/.env
cp apps/web/.env.sample apps/web/.env
# Update environment variables as needed
# See ENVIRONMENT_SETUP.md for detailed instructions
# Start development servers
pnpm dev
If you're upgrading from a previous version that used SQLite, you'll need to migrate your data to PostgreSQL. We recommend:
- Export your data from the old SQLite database
- Set up PostgreSQL using the new Docker Compose configuration
- Import your data into the new PostgreSQL database
Contact us on Discord if you need help with the migration process.
- Discord - Chat with users and contributors
- GitHub Issues - Bug reports and feature requests
- Documentation - Detailed guides and API docs
We're always looking for help, whether that's:
- Reporting bugs or suggesting features
- Improving documentation
- Contributing code
- Helping other users on Discord
Check out CONTRIBUTING.md for the details on how to get involved.
MIT License - see LICENSE for details.
Built with β€οΈ by the Kaneo team and contributors