tako-0.0.1 is not a library.
tako
Rust crate for the tako CLI and tako-dev-server local daemon binaries.
Responsibilities
- Project initialization (
tako init). - Local development flow (
tako dev,tako doctor). - Local development daemon runtime (
tako-dev-server). - Deployment orchestration (
tako deploy). - Release history and rollback (
tako releases ls,tako releases rollback). - Remote operational commands (
logs,delete,servers,secrets). - Config loading/validation, runtime detection, and SSH interactions.
Command Surface
Primary subcommands:
initlogsdevdoctorserverssecretsupgradedeployreleasesdelete
Use cargo run -p tako --bin tako -- --help for current flags and subcommand help.
Operational behavior highlights:
tako upgradeupgrades only the local CLI (install-aware: Homebrew, Cargo, or hosted installer fallback).tako servers statusprints one global snapshot and exits.tako servers upgrade <name>runs the remote installer in refresh mode (TAKO_RESTART_SERVICE=0) to update/usr/local/bin/tako-server, enters server upgrade mode, triggers service-manager reload (sudo systemctl reload tako-serveron systemd orsudo rc-service tako-server reloadon OpenRC), waits for readiness, then exits upgrade mode.- Status output shows separate lines for concurrently running builds of the same app.
- App heading lines show
app (environment) state; build/version is shown on the nestedbuild:line. tako deploypackages source files from the app's source root (git root when available; otherwise app directory), filtered by.gitignore.tako deployalways excludes.git/,.tako/,.env*,node_modules/, andtarget/from source bundles.tako deployresolves preset from top-levelpresetwhen set, otherwise falls back to adapter base preset from top-levelruntime(when set) or adapter detection (unknownfalls back tobun); unpinned official aliases are fetched frommasteron each resolve and the resolved source metadata is written to.tako/build.lock.json.tako deploybuilds per-target artifacts locally before upload, using Docker only when preset[build].containerresolves totrue; built-in JS base presets (bun,node,deno) default to local build mode (container = false) unless explicitly overridden.- Container builds stay ephemeral; dependency downloads are reused via per-target Docker cache volumes keyed by target label and builder image.
- Containerized deploy builds default to
ghcr.io/lilienblum/tako-builder-musl:v1for*-musltargets andghcr.io/lilienblum/tako-builder-glibc:v1for*-glibctargets. tako deploycaches target artifacts in.tako/artifactsand reuses verified cache hits when build inputs are unchanged; invalid cache entries are rebuilt automatically.- Local runtime version resolution is mise-aware: Tako probes
mise exec -- <tool> --versionwhenmiseis installed, then falls back tomise.tomlandlatest; local build stage commands also run throughmise exec -- sh -lc ...whenmiseis available. tako deploymerges build assets (preset assets +build.assets) into apppublic/after target build, in listed order.tako deploywritesapp.jsonin the deployed app directory andtako-serveruses it to resolve the runtime start command.tako releases lsshows release/build history for the current app and environment with commit metadata when available.tako releases rollback <release-id>rolls target servers back to a previous release id using the normal rolling-update path.tako servers addcaptures per-server target metadata (arch,libc) during SSH checks and stores it directly in each[[servers]]entry in~/.tako/config.toml.tako deployrequires valid target metadata for each selected server and does not probe targets during deploy.tako deployvalidates startup even forinstances = 0(on-demand) by briefly starting one instance; deploy fails if startup health checks fail.
Run and Test
From repository root:
Run a focused command from source:
Config Requirements
tako.tomlis required fordev,deploy,logs, andsecretsworkflows.- Top-level
nameintako.tomlis optional; when omitted, app identity falls back to sanitized project directory name. - Setting
nameexplicitly is recommended for stable identity and uniqueness per server; renaming identity later creates a new app path and requires manual cleanup of old deployments. - Non-development environments must define
routeorroutes; development defaults to{app}.tako.local.
Related Docs
website/src/pages/docs/quickstart.md(first-run local + remote setup)website/src/pages/docs/development.md(local dev workflow)website/src/pages/docs/deployment.md(remote deploy workflow)