npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@takohub-cli/linux-arm64

v0.7.5

Published

tako binary for Linux 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 upgrade in-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 --version

The 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.exe

Verify 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 SHA256SUMS

After 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 shape

Quick 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.md

Global 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: dev

tako 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 login when 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 in tako admin mirror model plan output (e.g. https://develop.takohub-web.pages.dev)
  • separate app and admin token 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 profile

Profile-aware commands also accept --profile <name> per-invocation and read the TAKOHUB_PROFILE env var.

tako --profile staging repo list
TAKOHUB_PROFILE=staging tako whoami

Configuring endpoint and web_url

Three ways, in priority order (highest first wins at request time):

  1. tako login --endpoint … --web-endpoint … — the recommended path; writes the credentials file in one shot.
  2. Manually edit ~/.config/takohub/credentials — handy for headless CI provisioning or to flip the web URL without re-logging-in.
  3. Env vars TAKOHUB_ENDPOINT / TAKOHUB_WEB_ENDPOINT — fallback when no profile is configured. Useful for one-shot scripts and Docker.

Note: tako config set does not touch endpoint / web_url. Those live in the credentials file (so they live next to the tokens that target them), not in config.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 production

Example — 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: dev

The 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-profile endpoint / 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 whoami

Subcommands

| 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:

  1. resolves HF metadata + file tree
  2. ensures the mirror-bot user and the target org
  3. creates + patches the model record
  4. streams every file via the admin upload protocol (with optional --pipe for disk-less LFS)
  5. by default flips publish_status to published

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-run

Source 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 upgrade

A 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-Expression

Version

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 --clean

CI runs on GitHub Actions (.github/workflows/ci.yml).

License

See LICENSE for details.