Tako helps you ship apps to your own servers without turning deployment into a part-time job.
Deploying used to feel simple: upload files, refresh, done.
Tako is an attempt to bring that feeling back, but with modern guardrails:
- fast local development
- smooth deploy flow
- app up and serving traffic quickly, without platform drama
You get:
- a CLI (
tako) for local dev + deployment - a remote runtime/proxy (
tako-server) - a local development daemon (
tako-dev-server) - a JavaScript/TypeScript SDK (
tako.sh)
- Rust toolchain (stable)
- Bun (for SDK/examples/website tooling)
just(optional, but useful for repo tasks)
From the repo root:
bun install
git config core.hooksPath .githooks
cargo build
cargo test --workspace
# Full matrix: Rust workspace + SDK tests + Docker e2e fixture test
just testRun CLI help from source:
cargo run -p tako --bin tako -- --helpRun the Bun example with Tako local dev flow:
just tako examples/js/bun devFormat Rust + repo files:
just fmtRun lint checks:
just lintRun full local CI flow (format, lint, tests):
just citako/: CLI crate (tako) and local dev daemon binary (tako-dev-server)tako-server/: remote runtime/proxy crate (tako-server)tako-core/: shared protocol typestako-socket/: shared Unix socket JSONL transport helperssdk/js/:tako.shSDK packageexamples/: runnable examplese2e/: deploy e2e fixture apps used by Docker integration testsscripts/: install/check helper scriptswebsite/: Tako website + installer endpointsdocker/: internal Docker tooling for build/debug workflows
Run Docker-based deploy e2e for fixture apps:
just e2e e2e/fixtures/js/bun
just e2e e2e/fixtures/js/tanstack-startUse the release module entrypoints:
just release tako
just release tako-server
just release sdk
just release tako-core
just release tako-socketRelease tags are signed (git tag -s). Ensure local Git tag signing is configured before running release commands.
Each command is a full flow for that component:
release tako:cargo publish -p tako+ versioned release notes + GitHub release asset upload (tako-*)release tako-server:cargo publish -p tako-server+ versioned release notes + GitHub release asset upload (tako-server-*)release sdk: release notes +npm publishfromsdk/jsrelease tako-core: shared crate release +cargo publish -p tako-corerelease tako-socket: shared crate release +cargo publish -p tako-socket
Recommended full release order:
just release tako-core
just release tako-socket
just release tako-server
just release tako
just release sdkrelease tako and release tako-server enforce a guard: if tako-core or tako-socket source changed since the last shared crate release tag, they fail with instructions to release shared crates first.
release tako and release tako-server also require authenticated GitHub CLI (gh auth login) to publish release assets used by https://tako.sh/install and https://tako.sh/install-server.
Release notes are written under dist/release-notes/.
tako and tako-server notes use git-cliff with cliff.toml, focusing on user-facing Features and Bug Fixes.
Notes generation is path-filtered per component (--include-path) so only relevant commits are included.
User docs live in website/ (source pages: website/src/pages/docs/).
Component-focused docs:
tako/README.mdtako-server/README.mdtako-core/README.mdtako-socket/README.mdsdk/js/README.md
Tako source code is licensed under MIT (/LICENSE).