@takohub-cli/win32-arm64
v0.7.5
Published
tako binary for Windows arm64 — installed automatically as an optional dependency of takohub-cli
Readme
TakoHub CLI
Language: English · 中文
tako is the official command-line client for TakoHub — a platform for hosting and sharing AI datasets and model repositories.
Features
- Authenticate with username/password or access token (CI-friendly)
- Create, list, inspect, rename, and delete repositories
- Browse branches and commits
- Upload files (with multipart + parallel parts) and resume on failure
- Download files with a three-tier blob cache compatible with the Hugging Face Hub layout
- Multiple-environment config via profiles
- Machine-readable JSON output on every command for scripting
- Admin: user management, role management, audit logs, model review, content lifecycle
- Mirror: import models from HuggingFace end-to-end (streams files, publishes), with resumable job tracking and optional disk-less pipe mode
- Shell completion for bash / zsh / fish / PowerShell
tako self upgradein-place binary update against the latest GitHub release
Installation
npm / npx (cross-platform, zero-config)
# One-shot via npx (no install)
npx takohub-cli login
# Or install globally
npm install -g takohub-cli
tako --versionThe npm package is a thin Node.js wrapper that resolves the right
platform binary from one of six @takohub-cli/<os>-<arch>
optional-dependency subpackages — only the one matching your host is
actually downloaded. The wrapper itself is ~12 KB; the platform
subpackage carries the same binary GitHub Releases publishes.
Pre-built binaries (recommended)
Each GitHub Release ships raw binaries — no tar.gz, no zip, no extraction step. Pick the file for your OS / arch from the Releases page, or use curl:
# Linux x86_64
curl -L https://github.com/webetter-ai/TakoHub-cli/releases/latest/download/tako_linux_amd64 \
-o tako && chmod +x tako && sudo mv tako /usr/local/bin/
# Linux arm64
curl -L https://github.com/webetter-ai/TakoHub-cli/releases/latest/download/tako_linux_arm64 \
-o tako && chmod +x tako && sudo mv tako /usr/local/bin/
# macOS Intel
curl -L https://github.com/webetter-ai/TakoHub-cli/releases/latest/download/tako_darwin_amd64 \
-o tako && chmod +x tako && sudo mv tako /usr/local/bin/
# macOS Apple Silicon
curl -L https://github.com/webetter-ai/TakoHub-cli/releases/latest/download/tako_darwin_arm64 \
-o tako && chmod +x tako && sudo mv tako /usr/local/bin/
# Windows x86_64 (PowerShell)
Invoke-WebRequest `
-Uri https://github.com/webetter-ai/TakoHub-cli/releases/latest/download/tako_windows_amd64.exe `
-OutFile tako.exeVerify the download against SHA256SUMS (also published with each release):
curl -LO https://github.com/webetter-ai/TakoHub-cli/releases/latest/download/SHA256SUMS
sha256sum -c --ignore-missing SHA256SUMSAfter install, tako self upgrade keeps the binary current in place.
Build from source
Requires Go 1.24+.
git clone https://github.com/webetter-ai/TakoHub-cli.git
cd TakoHub-cli
make dev # ~15 MB, debug symbols kept for delve/panic traces
make release-local # ~11 MB, stripped — matches the GitHub release shapeQuick Start
# Log in (interactive)
tako login
# Log in with a token (CI / non-interactive)
echo "$TAKOHUB_TOKEN" | tako login --token-stdin
# Who am I?
tako whoami
# List your repositories
tako repo list
# Upload a file
tako upload frank/my-model ./weights.bin
# Download a file
tako download frank/my-model README.mdGlobal flags
These apply to every tako command. Specific subcommands may add more.
| Flag | Description |
|------|-------------|
| --json | Machine-readable JSON output (disables colors / progress bars) |
| --color auto\|always\|never | Control color output (also respects NO_COLOR) |
| --utc | Show timestamps as ISO 8601 UTC instead of relative time |
| --verbose | INFO-level logging on stderr |
| --debug | DEBUG-level logging; writes to ~/.cache/takohub/logs/<date>.log |
| --profile <name> | Override the active config profile (also TAKOHUB_PROFILE env) |
| -y, --yes | Skip interactive confirmations (non-TTY mode only) |
| --token <jwt> | Override the resolved access token for the current command (admin commands only) |
| -h, --help | Help for any command |
| -v, --version | Print the binary version |
Environment variables
| Variable | Effect |
|----------|--------|
| TAKOHUB_TOKEN | App-side access token (fallback when not logged in) |
| TAKOHUB_PROFILE | Active profile (overridden by --profile) |
| TAKOHUB_ENDPOINT | API endpoint (fallback when no profile sets one) |
| TAKOHUB_WEB_ENDPOINT | Public web URL for clickable links (fallback when no profile sets one) |
| TAKOHUB_CONFIG_DIR | Override the config directory (default ~/.config/takohub) |
| TAKOHUB_MIRROR_JOBS_DIR | Override the mirror job state directory |
| TAKOHUB_MIRROR_LOGS_DIR | Override the mirror per-job log directory |
| TAKO_ADMIN_TOKEN | Admin token fallback when no admin slot is logged in |
| HF_TOKEN / HUGGING_FACE_HUB_TOKEN | Default HuggingFace token used by mirror |
| NO_COLOR | Force --color=never |
Top-level commands
| Command | Purpose |
|---------|---------|
| login | Authenticate with TakoHub |
| logout | Clear the saved app-session token |
| whoami | Show the authenticated user |
| repo | Manage repositories |
| branch | Manage branches |
| commit | Browse commits |
| tree | List repo contents |
| cat | Print a file |
| upload | Upload files / directories |
| download | Download files / repositories |
| config | Read / write CLI config |
| admin | Administrative subcommands |
| self upgrade | In-place binary upgrade |
| completion | Generate shell completion script |
| version | Print version |
Authentication
tako login
Authenticate against TakoHub and save the result to ~/.config/takohub/credentials. The command picks one of three sign-in paths automatically based on the flags you pass:
| Path | Trigger | What it does |
|------|---------|--------------|
| Interactive (default) | no --token* flag | Opens a huh form: pick password or access token, then prompt for the rest. |
| --token <jwt> | flag set | Validates the token via GET /users/me and saves. |
| --token-stdin | flag set | Reads the token from stdin. Preferred for CI — keeps the token out of ps / shell history. |
| Flag | Description |
|------|-------------|
| --token <jwt> | Use this access token (non-interactive) |
| --token-stdin | Read the access token from stdin (CI-friendly) |
| --endpoint <url> | Override the API endpoint URL for this profile (resolved on first login) |
| --web-endpoint <url> | Public web URL for this environment (clickable model links + mirror plan Target row) |
The global --profile <name> flag (also TAKOHUB_PROFILE env) picks which profile slot the credentials land in. Without it, tako login writes to the active profile (set by tako config use).
Examples
# Plain interactive login against the active profile
tako login
# First-time set-up of a new "dev" profile in one shot
tako login \
--profile dev \
--endpoint https://dev-api.webetter.co.jp \
--web-endpoint https://develop.takohub-web.pages.dev
# CI / non-interactive — token via stdin (won't appear in `ps` or shell history)
echo "$TAKOHUB_TOKEN" | tako login --profile dev --token-stdin
# Quick one-shot login with a known token
tako login --token eyJhbGc...What gets written
After a successful login, the active profile in ~/.config/takohub/credentials looks like:
profiles:
dev:
endpoint: https://dev-api.webetter.co.jp
web_url: https://develop.takohub-web.pages.dev # only when --web-endpoint was passed
app:
token: eyJhbG…
username: alice
email: [email protected]
user_id: 42
expires_at: 2026-08-12T00:00:00Z
default_profile: devtako login only writes the app slot. Admin sessions go into a separate admin slot via tako admin login — they coexist within the same profile.
What it does not do
- Doesn't persist the password — only the resulting token.
- Doesn't auto-refresh expired tokens — re-run
tako loginwhen one expires. - Doesn't touch
~/.config/takohub/config.yaml(output prefs / mirror knobs live there; credentials are separate). - Doesn't do OAuth / SSO. Today it's password + long-lived access tokens only.
tako logout
Clear the saved app-session token for the active profile. No flags.
tako whoami
Print the authenticated user.
| Flag | Description |
|------|-------------|
| --json | Output as JSON (spec §5.1 schema) |
Repositories
tako repo create my-dataset [flags]
tako repo list [flags]
tako repo show <owner>/<name>
tako repo rename <owner>/<name> <new-name>
tako repo settings <owner>/<name> [flags]
tako repo delete <owner>/<name>tako repo create <name>
| Flag | Description |
|------|-------------|
| --private | Make the repository private |
| --org <handle> | Create under this organization instead of the authenticated user |
| --license <spdx> | License identifier (e.g. mit, apache-2.0) |
| --task <slug> | Task type (e.g. text-generation, image-classification) |
tako repo list
| Flag | Description |
|------|-------------|
| --user <name> | Filter by username |
| --org <handle> | Filter by organization |
| --limit <n> | Maximum number of results (0 = server default) |
| --offset <n> | Number of results to skip |
| --json | Output as JSON |
tako repo show <owner>/<name>
| Flag | Description |
|------|-------------|
| --json | Output as JSON |
tako repo rename <owner>/<name> <new-name>
No flags.
tako repo settings <owner>/<name>
| Flag | Description |
|------|-------------|
| --private | Make the repository private |
| --public | Make the repository public |
| --license <spdx> | Set the license identifier |
| --task <slug> | Set the task type |
| --json | Output the updated record as JSON |
tako repo delete <owner>/<name>
| Flag | Description |
|------|-------------|
| -y, --yes | Skip confirmation prompt |
Branches
tako branch list <owner>/<name>
tako branch create <owner>/<name> <new-branch> [--from <base>]
tako branch delete <owner>/<name> <branch>tako branch list <owner>/<name>
| Flag | Description |
|------|-------------|
| --json | Output as JSON |
tako branch create <owner>/<name> <new-branch>
| Flag | Description |
|------|-------------|
| --from <ref> | Base branch, tag, or commit SHA (default main) |
tako branch delete <owner>/<name> <branch>
| Flag | Description |
|------|-------------|
| --force | Skip confirmation and allow deletion of protected branches |
Commits
tako commit list <owner>/<name> [flags]
tako commit show <owner>/<name> <sha>tako commit list <owner>/<name>
| Flag | Description |
|------|-------------|
| --branch <name> | Filter commits by branch name |
| --limit <n> | Maximum number of commits to show |
| --json | Output as JSON |
tako commit show <owner>/<name> <sha>
| Flag | Description |
|------|-------------|
| --json | Output as JSON |
Browse repository contents
tako tree <owner>/<name> [path] [-r <revision>]
tako cat <owner>/<name> <path> [-r <revision>]tako tree <owner>/<name> [path]
| Flag | Description |
|------|-------------|
| -r, --revision <ref> | Branch, tag, or commit to browse (default main) |
| --json | Output as JSON |
tako cat <owner>/<name> <path>
Max 1 MiB per file.
| Flag | Description |
|------|-------------|
| -r, --revision <ref> | Branch, tag, or commit to read from (default main) |
Upload
tako upload <owner>/<name> <local-path>
Upload a single file or a directory. Directory uploads honour glob filters; large files transparently use multipart against object storage.
tako upload frank/my-model ./README.md
tako upload frank/my-model ./weights/ --include "*.bin" --exclude "*.tmp"
tako upload frank/my-model ./file.bin --message "add weights" --revision main
tako upload frank/my-model ./file.bin --dry-run| Flag | Description |
|------|-------------|
| -m, --message <msg> | Commit message (default: upload <filename> or upload N files) |
| --revision <ref> | Target branch or tag (default: repository default branch) |
| --include <glob> | Glob patterns to include when path is a directory (repeatable) |
| --exclude <glob> | Glob patterns to exclude when path is a directory (repeatable) |
| --concurrency <n> | Max files in parallel (default 4) |
| --dry-run | Print what would be uploaded without sending writes |
Interrupted uploads persist job state under ~/.config/takohub/jobs/upl_*.yaml and are resumable via the same upload command.
Download
tako download <owner>/<name> [file]
Download one file or an entire repository. Without <file> the whole repo is fetched.
# Single file
tako download frank/my-llama README.md
tako download frank/my-llama README.md --local-dir ./models/llama --ref v1.0
# Whole repo, with glob filter
tako download frank/my-llama
tako download frank/my-llama --include "*.safetensors" --exclude "*.gguf"
tako download frank/my-llama --no-cache --local-dir ./out| Flag | Description |
|------|-------------|
| --ref <ref> | Branch, tag, or commit (default main) |
| -r, --revision <ref> | Deprecated alias of --ref |
| --local-dir <path> | Target directory (default ./<repo-name>/) |
| --local-dir-use-symlinks auto\|true\|false | How blobs are linked into local-dir (default auto) |
| --include <glob> | Only download paths matching this glob (repeatable) |
| --exclude <glob> | Exclude paths matching this glob (repeatable) |
| --no-cache | Skip the blob cache; download directly to --local-dir |
| --force | Overwrite existing output directory without prompting |
| --dry-run | List files that would be downloaded without downloading |
| --quiet | Suppress per-file output; show only the final summary |
The download cache lives at ~/.cache/takohub/models--<owner>--<name>/ and follows the three-tier (refs / blobs / snapshots) layout of the Hugging Face Hub cache.
Configuration
Profiles let you switch between multiple TakoHub deployments (local dev, staging, production) or multiple accounts on the same deployment. Each profile owns:
endpoint— API base URL (where every HTTP call goes, e.g.https://dev-api.webetter.co.jp)web_url— public web origin used for clickable model links and the Target row intako admin mirror modelplan output (e.g.https://develop.takohub-web.pages.dev)- separate
appandadmintoken slots, so signed-in app sessions and admin sessions coexist
tako config list # list profiles, show the current default
tako config get <key> # read a single value
tako config set <key> <value> # set a non-credential value (output prefs, mirror knobs, …)
tako config unset <key> # remove a single value
tako config use <profile> # permanently switch the default profileProfile-aware commands also accept --profile <name> per-invocation and read the TAKOHUB_PROFILE env var.
tako --profile staging repo list
TAKOHUB_PROFILE=staging tako whoamiConfiguring endpoint and web_url
Three ways, in priority order (highest first wins at request time):
tako login --endpoint … --web-endpoint …— the recommended path; writes the credentials file in one shot.- Manually edit
~/.config/takohub/credentials— handy for headless CI provisioning or to flip the web URL without re-logging-in. - Env vars
TAKOHUB_ENDPOINT/TAKOHUB_WEB_ENDPOINT— fallback when no profile is configured. Useful for one-shot scripts and Docker.
Note:
tako config setdoes not touchendpoint/web_url. Those live in the credentials file (so they live next to the tokens that target them), not inconfig.yaml.
Example — first-time set-up of a dev + production split
# Dev environment
tako login \
--profile dev \
--endpoint https://dev-api.webetter.co.jp \
--web-endpoint https://develop.takohub-web.pages.dev
# Production
tako login \
--profile production \
--endpoint https://api.webetter.co.jp \
--web-endpoint https://www.webetter.co.jp
# Use either per-command…
tako --profile dev repo list
tako --profile production whoami
# …or pin the session-wide default
tako config use productionExample — updating after login (no re-login needed)
Open ~/.config/takohub/credentials and edit the profile in place:
profiles:
dev:
endpoint: https://dev-api.webetter.co.jp
web_url: https://develop.takohub-web.pages.dev # ← add or change this
app:
token: eyJhbG…
username: alice
admin:
token: eyJhbG…
username: alice
production:
endpoint: https://api.webetter.co.jp
web_url: https://www.webetter.co.jp
default_profile: devThe file is mode 0600 on POSIX. Save it and the next tako invocation picks the change up.
What you should see after configuring web_url
The mirror plan box renders the web host, not the API host:
┌──────────────────────────────────────────────────────────────────────────┐
│ Source: huggingface.co/HuggingFaceTB/nanowhale-100m │
│ Target: develop.takohub-web.pages.dev/HuggingFaceTB/nanowhale-100m │ ← web_url's host
│ Visibility: public │
└──────────────────────────────────────────────────────────────────────────┘When web_url isn't configured you see a bare owner/repo and a hint to set it. The post-mirror Model: line works the same way: with web_url it prints a clickable https://develop.takohub-web.pages.dev/models/..., without it just owner/repo.
Files
~/.config/takohub/config.yaml— viper-backed CLI config (profile defaults, output preferences, mirror knobs)~/.config/takohub/credentials— per-profileendpoint/web_url/ app + admin tokens (mode 0600 on POSIX, YAML)
Override the config directory entirely with TAKOHUB_CONFIG_DIR=/path/to/dir.
Admin
Admin commands require an admin-scoped token, resolved in this order: --token flag → TAKOHUB_TOKEN env (or TAKO_ADMIN_TOKEN) → credentials file admin slot for the active profile.
tako admin login [--endpoint <url>] [--web-endpoint <url>] [--token <jwt>]
tako admin logout
tako admin whoamiSubcommands
| Subtree | Purpose |
|---------|---------|
| admin user | User CRUD |
| admin role | Role CRUD + user-role binding |
| admin audit | Login / operation audit logs |
| admin model | Model review + lifecycle |
| admin mirror | Import models from HuggingFace |
admin user management
tako admin user list [--status active|disabled] [--json]
tako admin user show <username> [--json]
tako admin user create <username> --email <email> --password <password> [--json]
tako admin user enable <username>
tako admin user disable <username> [-y]
tako admin user delete <username> [-y]
tako admin user reset-password <username> --new-password <password>| Command | Flag | Description |
|---------|------|-------------|
| list | --status <state> | Filter by active or disabled |
| list, show, create | --json | Output as JSON |
| disable, delete | -y, --yes | Skip confirmation (non-TTY / script mode only) |
admin role management
tako admin role list [--json]
tako admin role show <code> [--json]
tako admin role create <code> [--name <display>] [--description <text>] [--json]
tako admin role grant <username> <role-code> [-y]
tako admin role revoke <username> <role-code>| Command | Flag | Description |
|---------|------|-------------|
| create | --name <name> | Display name (defaults to code) |
| create | --description <text> | Optional description |
| create, list, show | --json | Output as JSON |
| grant | -y, --yes | Skip the super_admin grant confirmation prompt |
admin audit logs
tako admin audit login-log [--user <name>] [--since 24h|7d] [--json]
tako admin audit oper-log [--user <name>] [--action <code>] [--since 24h|7d] [--json]| Flag | Description |
|------|-------------|
| --user <name> | Filter by admin username |
| --since <duration> | Show entries newer than this duration (e.g. 24h, 7d) |
| --action <code> | (oper-log only) Filter by action code (e.g. model.approve) |
| --json | Output as JSON array |
admin model management
Lifecycle / review actions on existing models.
tako admin model review pending [--json]
tako admin model review approve <owner>/<name> [--note <msg>] [-y] [--json]
tako admin model review reject <owner>/<name> --reason <msg> [-y] [--json]
tako admin model certify <owner>/<name> [-y] [--json]
tako admin model offline <owner>/<name> [--reason <msg>][-y] [--json]
tako admin model restore <owner>/<name> [-y] [--json]| Command | Flag | Description |
|---------|------|-------------|
| review approve | --note <text> | Optional note recorded in the review log |
| review reject | --reason <text> | Reason for rejection (required) |
| offline | --reason <text> | Reason for taking the model offline |
| every action | -y, --yes | Skip confirmation prompt |
| every action | --json | Output the resulting record as JSON |
admin mirror
End-to-end import from HuggingFace into TakoHub. Each mirror model run:
- resolves HF metadata + file tree
- ensures the mirror-bot user and the target org
- creates + patches the model record
- streams every file via the admin upload protocol (with optional
--pipefor disk-less LFS) - by default flips
publish_statustopublished
All mirror operations persist a resumable job under ~/.config/takohub/jobs/mir_*.yaml. Resume with tako admin mirror jobs resume <id>.
admin mirror model <source-uri>
tako admin mirror model hf:meta-llama/Llama-2-7b
tako admin mirror model hf:meta-llama/Llama-2-7b --to-org webetter-meta
tako admin mirror model hf:meta-llama/Llama-2-7b --license-map "llama2=other"
tako admin mirror model hf:meta-llama/Llama-2-7b --publish draft
tako admin mirror model hf:meta-llama/Llama-2-7b --pipe
tako admin mirror model hf:meta-llama/Llama-2-7b --dry-runSource URI forms: hf:<org>/<repo> · huggingface:<org>/<repo> · huggingface:<org>/<repo>@<ref>.
| Flag | Description |
|------|-------------|
| --to-org <handle> | Target org handle (default: source org) |
| --ref <ref> | Upstream branch, tag, or commit (default: source default branch) |
| --license-map "raw=spdx" | Override license mapping, e.g. "llama2=other" |
| --note <text> | Note stored in the job metadata |
| --no-auto-org | Fail if target org does not exist (disable auto-create) |
| --allow-unsafe | Allow files flagged unsafe by HF security scan |
| --dry-run | Print the mirror plan without executing |
| --concurrency <n> | Concurrent file-transfer parts (default 4) |
| --publish <state> | After streaming: published (default), draft, or offline. in_review is rejected — that state is reserved for user-side submissions. |
| --pipe | Stream LFS-tracked files HF → backend storage without local disk spool (saves tmp space; failed parts must re-pull from HF) |
| --hf-token <token> | HuggingFace token (falls back to HF_TOKEN/HUGGING_FACE_HUB_TOKEN env) |
| --json | Emit NDJSON progress events |
admin mirror models --org <handle>
Fan out mirror model across every model in an HF org.
tako admin mirror models --org meta-llama
tako admin mirror models --org meta-llama --filter task=text-generation --to-org webetter-meta
tako admin mirror models --org meta-llama --dry-run| Flag | Description |
|------|-------------|
| --org <handle> | HuggingFace org handle to list models from (required) |
| --filter "key=val" | List-level filter (today only task=<pipeline-tag> is supported) |
| --to-org <handle> | Target TakoHub org handle (default: same as source) |
| --concurrency <n> | Number of concurrent model mirrors (default 2) |
| --publish <state> | Same semantics as mirror model --publish (default published) |
| --pipe | Same semantics as mirror model --pipe |
| --dry-run | List the plan without executing |
| --hf-token <token> | HuggingFace access token |
| --json | Emit NDJSON progress events |
admin mirror org <hf-handle> / admin mirror orgs <handle...>
Just mirror organization profiles (no model files).
tako admin mirror org meta-llama [--to-handle webetter-meta] [--json]
tako admin mirror orgs meta-llama mistralai [--concurrency 2] [--json]| Command | Flag | Description |
|---------|------|-------------|
| org | --to-handle <handle> | Target TakoHub org handle (default: same as source) |
| orgs | --concurrency <n> | Number of concurrent org mirrors (default 2) |
| orgs | --filter <expr> | Filter expression (reserved for future use) |
| both | --hf-token <token> | HuggingFace access token |
| both | --json | Emit NDJSON output |
admin mirror batch
Plan-and-fan-out architecture for large jobs. Source list comes from either an HF --author enumeration or a --from-file line-per-URI file. Note: the per-model worker in batch is still the FRA-101 plan-only stub — it records job state but doesn't stream files. Use mirror models for fan-out that actually streams.
tako admin mirror batch --author meta-llama --filter task=text-generation --limit 20
tako admin mirror batch --from-file ./uris.txt --concurrency 4 --watch| Flag | Description |
|------|-------------|
| --author <handle> | List models from this HF org/user |
| --from-file <path> | File with one source URI per line |
| --filter "key=val" | HF list filter (today only task=<pipeline-tag>) |
| --min-size <bytes> | Skip models smaller than this (suffixes: KB/MB/GB) |
| --max-size <bytes> | Skip models larger than this |
| --limit <n> | Cap number of models (0 = no cap) |
| --concurrency <n> | Concurrent mirror workers (default 2) |
| --ref <ref> | Upstream ref applied to every model |
| --note <text> | Note recorded on every per-model job state |
| --dry-run | Resolve and plan without writing model records |
| --watch | Re-render progress every 2 s |
| --hf-token <token> | HuggingFace access token |
| --json | Emit NDJSON progress events |
admin mirror sources
tako admin mirror sources list [--json]
tako admin mirror sources update-taxonomy [-o <path>]| Command | Flag | Description |
|---------|------|-------------|
| list | --json | Emit JSON output |
| update-taxonomy | -o, --output <path> | Output file path (default ~/.config/takohub/hf-taxonomy.json) |
admin mirror taxonomy
tako admin mirror taxonomy sync [--hf-token <token>]| Flag | Description |
|------|-------------|
| --hf-token <token> | HuggingFace access token |
admin mirror jobs — manage mirror jobs
Each mirror operation creates a local job record (~/.config/takohub/jobs/mir_<id>.yaml). All commands accept short-prefix job IDs (e.g. mir_01HX resolves to the unique matching job).
tako admin mirror jobs list [--watch] [--json]
tako admin mirror jobs status <job-id> [--json]
tako admin mirror jobs logs <job-id> [--json]
tako admin mirror jobs resume <job-id> [--json]
tako admin mirror jobs cancel <job-id> [--yes]| Command | Flag | Description |
|---------|------|-------------|
| list | --watch | Refresh the table every 2 seconds |
| list, status, logs | --json | JSON output |
| resume | --json | Emit NDJSON resume / streaming events |
| cancel | --yes | Skip confirmation prompt |
The legacy tako admin mirror job <id> (singular) inspector is still available for parity with older docs — prefer the plural form for new scripts.
Mirror-bot user
Every org created by a mirror flow is owned by a single shared service user called mirror-bot (auto-created on first mirror). This keeps HF author handles out of the platform user namespace and avoids the cross-table collision between user.username and organization.handle. Don't log in as mirror-bot; its password is randomly generated and discarded.
Self-upgrade
tako self upgrade
In-place update the running binary to the latest GitHub release. Detects OS + arch, downloads the matching archive, verifies the checksum, and replaces the binary atomically.
tako self upgradeA non-blocking version check on every startup prints a one-line "newer version available" notice when applicable; the check is cached for 24 hours.
Shell completion
tako completion bash|zsh|fish|powershell
Generate completion scripts. The output is shell-specific; pipe it to the appropriate location for your shell.
# bash (system-wide)
tako completion bash | sudo tee /etc/bash_completion.d/tako
# zsh (per-user)
tako completion zsh > "${fpath[1]}/_tako"
# fish
tako completion fish > ~/.config/fish/completions/tako.fish
# PowerShell
tako completion powershell | Out-String | Invoke-ExpressionVersion
tako version
Print the binary version, commit, and build date. Compatible with --json for scripts.
Exit Codes
| Code | Meaning | |------|---------| | 0 | Success | | 1 | Generic error | | 2 | Usage / bad arguments | | 3 | Auth (login required / token expired / invalid credentials) | | 4 | Permission denied (admin role required / RBAC) | | 5 | Resource not found | | 6 | Conflict (duplicate handle / repo / branch) | | 7 | Validation (bad request body / unsupported value) | | 9 | Server error (HTTP 5xx) | | 130 | Interrupted (Ctrl-C) |
Development
# Run all tests
go test ./...
# Lint
golangci-lint run
# Build a snapshot release (requires goreleaser)
goreleaser build --snapshot --cleanCI runs on GitHub Actions (.github/workflows/ci.yml).
License
See LICENSE for details.
