tb_sys_cli_prereqs
Taubyte CLI prerequisites (hard gate)
Purpose
Run this skill before any other Taubyte skill. It ensures Node.js, Docker (engine running — needed for Dream, inject, and local container workflows), tau / dream, and (when GitHub work is in scope) authenticated tau profile are in place.
Stop conditions (read first)
| Situation | Action |
|---|---|
| Node missing and cannot be installed from this environment | Stop; give OS-specific install instructions; do not run npm i -g without node. |
| Docker missing, daemon not running, and cannot be fixed from this environment | Stop; give install/start instructions (see Docker section). |
GitHub-backed work needed but no tau profile / login incomplete |
Stop; follow tb_sys_auth_profile (browser login hard stop applies there). |
tau or dream still broken after install attempts |
Stop; log attempts in .taubyte_ai/logs.txt (or project context log per tb_sys_context_log). |
Workflow order
- Node.js — detect; install automatically when possible (see §1).
- Docker — detect CLI + daemon; install or start when possible (see §2).
tau/dream— detect; install from@taubytenpm packages when missing (see §3).tau login/ profile —tb_sys_auth_profilefor all login policy; quicktau --json currentgate here (see §4).- Verify after any install (see §5).
1. Node.js
Detect
command -v node >/dev/null 2>&1 && node --version
command -v npm >/dev/null 2>&1 && npm --version
If node is missing or node --version fails
Prefer installing Node for the user when the environment supports it (network, permissions, non-interactive package managers):
-
Windows (e.g.
wingetavailable):winget install -e --id OpenJS.NodeJS.LTS --accept-package-agreements --accept-source-agreements -
macOS (
brewon PATH):brew install node -
Linux (Debian/Ubuntu family, when
apt-getis usable):sudo apt-get update && sudo apt-get install -y nodejs npm
If automated install fails, is blocked (no sudo, no winget/brew, CI sandbox), or the OS is unclear, stop and ask the user to install Node.js LTS from https://nodejs.org/ (or their distro’s Node LTS packages), then open a new terminal and rerun this skill.
Do not run npm i -g @taubyte/cli or npm i -g @taubyte/dream until node and npm work.
2. Docker
Docker is required for Dream, dream inject, and other local container-backed Taubyte flows (see tb_wf_dream_inject_and_verify, tb_sys_cloud_selection). You need both the docker CLI and a running daemon (docker info succeeds).
Detect
command -v docker >/dev/null 2>&1 && docker version
docker info
- If
dockeris not in PATH → treat as not installed; try install workflow below. - If
docker infofails with connection / daemon errors butdocker versionshows a client → the engine is stopped or the user lacks permission. Prefer starting Docker Desktop (Windows/macOS) orsudo systemctl start docker(Linux), orsudo usermod -aG docker $USER+ re-login when the error is permission-related. Do not assume a fresh install fixes a stopped daemon.
Install when the CLI is missing (automate when possible)
-
Windows (
winget):winget install -e --id Docker.DockerDesktop --accept-package-agreements --accept-source-agreementsAfter install, the user may need to start Docker Desktop once (or reboot). Re-run
docker infoafter they confirm it is running. -
macOS (
brew):brew install --cask dockerThen start Docker Desktop from Applications and re-check
docker info. -
Linux (Debian/Ubuntu, when
apt-get+ sudo work):sudo apt-get update && sudo apt-get install -y docker.io sudo systemctl enable --now dockerIf builds still fail with permission errors, document
sudo usermod -aG docker <user>and logging out/in, or usesudo docker infoonly to confirm the daemon — long-term, the user should be in thedockergroup.
If install is not possible (no admin, winget/brew/apt unavailable, headless policy), stop and point the user to https://docs.docker.com/get-docker/ for Docker Engine or Docker Desktop, then rerun this skill once docker info works.
3. Taubyte CLIs on npm (@taubyte scope)
Official tau and Dream packages are published on npm under the @taubyte organization, for example:
@taubyte/cli— provides thetaucommand (wrapper downloads the platformtaubinary as needed).@taubyte/dream— local cloud / Dream CLI.
Browse or confirm versions: https://www.npmjs.com/search?q=scope%3A%40taubyte.
Detect
command -v tau >/dev/null 2>&1 && tau version
command -v dream >/dev/null 2>&1 && (dream --version || dream --help) || true
CLI drift note (stable vs dev):
tauanddreamevolve quickly; do not assume subcommands exist based on older/newer docs.- Always sanity-check capabilities with:
tau --help
dream --help
If dream fails but Node works, a broken shell alias may point to a missing binary. Try:
node "$(npm root -g)/@taubyte/dream/index.js" --help
Install when missing (Node + npm must work)
Default: global npm:
npm i -g @taubyte/cli
npm i -g @taubyte/dream
Alternative (e.g. npm global path blocked):
curl https://get.tau.link/cli | sh
curl https://get.tau.link/dream | sh
If install fails, stop immediately (see stop conditions).
4. Auth and tau login (defer to tb_sys_auth_profile)
Any flow that touches GitHub (clone, tau new project, tau push, generated repos) needs a valid Taubyte profile and GitHub auth.
Do not improvise login policy here. Load and follow tb_sys_auth_profile for:
tau login,tau login --new,--name,--token,--provider github- Browser-based login (tell user, stop until done — see that skill)
- Non-interactive patterns with
tb_sys_execution_modes
Minimal gate check in this skill only:
tau --json current
Inspect Profile (and cloud if needed). If there is no profile and the upcoming work requires GitHub, apply tb_sys_auth_profile and do not continue to project create, push, import, or website repo operations until auth is resolved.
If the user refuses or cannot complete required login, stop the Taubyte workflow.
5. Verify after installs
node --version
npm --version
docker version
docker info
tau version
dream --version || dream --help || node "$(npm root -g)/@taubyte/dream/index.js" --help
Hard stops (summary)
- No Node (and install not possible or failed): stop; no global
@taubytenpm installs. - No working Docker (CLI missing and install failed, or daemon not running / no permission after user guidance): stop before Dream / inject / local container work.
- GitHub work without completed auth per
tb_sys_auth_profile: stop. tau/dreamstill failing after install: stop; log diagnostics to.taubyte_ai/logs.txt.- Do not proceed to cloud / project / resource operations until this gate passes.
More from taubyte/skills
verifying-taubyte-functions
Verifies a Taubyte Go function locally via the `taubyte/go-wasi` Docker recipe (preferred over `tau build`, with tmpfs+bind-mount-ro to avoid root-owned artifacts in the source tree), and verifies a function actually serves on Dream by curling the gateway with the right `Host:` header (plus `/etc/hosts` mapping for `*.localtau`). Use when locally compiling a Go function to WASM, when smoke-testing a function before pushing, or when probing a Dream-hosted HTTP function from the laptop.
12creating-taubyte-resources
Creates Taubyte resources non-interactively via `tau new` for domain, website, library, function, application, database, storage, messaging, and service. Encodes the project-vs-application scope rule, the database `min < max` constraint, the website/library `--generate-repository` + import sequence, and the forbidden `--generated-fqdn-prefix` flag. Use when adding any resource to a Taubyte project's config repo.
12diagnosing-dream-builds
Diagnoses Dream local-cloud builds when `tau list/query builds` is empty or unreliable, by hitting the jobs HTTP endpoint directly (`GET /jobs/<project_id>`, `GET /job/<job_id>`) using the GitHub token from `~/tau.yaml`, then downloading logs with `tau query logs --jid`. Use when Dream builds appear silent, the build table is empty after `dream inject`, or you need raw job ids and logs for a failing build.
11taubyte-resource-creation
Scope-aware resource creation workflow. Uses non-interactive mode by default and references the shared flags catalog.
11taubyte-push-build-verify
Pushes config/code and verifies builds/logs. Includes website/library push handling with tau command first, git fallback.
11taubyte-scope-routing
Routes project-level vs application-scoped work; defaults to a website when a browser UI is logically appropriate; avoids unnecessary applications for simple website/function-only tasks unless needed.
11