This document keeps implementation-oriented notes out of the main README. Treat it as a reference for exploring and developing Kuku, not as a rigid setup recipe. The repository changes quickly, so when details differ, prefer the scripts, package manifests, and env.example files closest to the code you are working on.
apps/
desktop/ Tauri + SolidJS macOS app
web/ Astro website, auth, dashboard, downloads, changelog, roadmap
server/ Go + Postgres API server
crates/
kuku-ai/ Desktop AI runtime
kuku-indexer/ Markdown extraction, search, and wikilink indexing
kuku-contract/ Rust RPC contract bindings
packages/
contract/ Shared protobuf contract
infra/docker/
local/ Local full-stack environment
preview/ Preview server stack
prod/ Production server stack
- pnpm
- Rust
- Go
- Docker / Docker Compose
Dependencies are usually installed with:
pnpm installThe broad workspace checks are:
pnpm check
pnpm test
pnpm buildThe protobuf contracts can be regenerated with:
pnpm contract:generateFor desktop development, the usual entry point is:
pnpm --filter @kuku/desktop tauri:devFor web development, the usual entry point is:
pnpm --filter @kuku/web devWhen you need the full web + API + database stack locally, use the Docker setup as a reference starting point:
cd infra/docker/local
cp env.example env
docker compose up -d --buildDefault local endpoints are:
Web http://localhost:8081
API http://localhost:8080
Mailpit http://localhost:8025
Kuku's server is built with Go + Postgres and ships with Docker Compose configurations. Use these as starting points for your own deployment rather than assuming they are the only supported topology.
infra/docker/local: local development with web + server + postgres + mailpitinfra/docker/preview: preview environmentinfra/docker/prod: production API server behind Cloudflare Tunnel
The production topology expects the web app to be deployed to Cloudflare Pages, with the API exposed through Cloudflare Tunnel under a hostname such as api.kuku.mom.
For operational details, start with the READMEs and env.example files under infra/docker/*.
Release metadata for the website and updater lives in apps/web/src/config/prod_release.ts, while the desktop bundle version lives in apps/desktop/src-tauri/tauri.conf.json.