CLI overview
The executable is named tv. It is the only supported interface for file and administrative operations in the MVP.
Implementation status: partially implemented. A private local-development package provides tested
tv version(including Git checkout origin reporting),tv dev capabilities, email-and-passwordtv loginwith a--browserdevice-approval fallback (#22), scopedtv whoamiandtv logout(#23), a private-Gittv update(#25),tv folder create(any active member, not just an administrator),tv folder list(one-level browse of a folder's immediate children, issue #56) plustv metadata listdiscovery,tv admin folder list|deactivate, and the fulltv admin metadata create|list|show|update|deactivategroup (#5),tv file put|info|get(#6),tv file find|update|moveplustv file info --revisionsand folder-subtree-scoped search via--within <folder-id>(#7, issue #57),tv file version add|versions,tv file get --version,tv file archive|restore, andtv file find --archived(#8),tv admin user list|deactivate|role,tv admin group create|list|add-member|remove-member,tv file access grant|revoke|list, andtv folder access grant|revoke|list(#9), andtv admin audit listplus thetv file info|get --admin-reason <reason>exceptional-administrator-access override (#10). Card #24 andtv admin user inviteremain planned. No public npm release, signed installer (see #12), or Tauri client is implemented.
Command families
tv versionreports the local development CLI version in human or JSON form.tv dev capabilitiescalls an explicitly enabled, non-sensitive development endpoint and reports a validated correlation ID.tv loginsigns in with an invited email and password (--password-stdinfor automation; a password is never accepted on the command line) and atomically writes the issued opaque token to a private XDG/AppData credential file;--browserfalls back to the older device-approval flow.tv file put|info|getuploads, inspects, and downloads files;tv file findsupports typed metadata (--meta), free-form tag (--tag) and live subtree (--within) filters with keyset pagination;tv file updatechanges typed metadata with immutable revision history; andtv file moverelocates files with atomic access recalculation. Version and archive/restore commands preserve immutable content history. Administrators may inspect and download organization content without a grant;--admin-reasonis optional, and every override is recorded asadmin.content.access.tv folder createlets any active member -- not only an administrator -- create and own a Root Folder, with implicitmanageand no separate grant row for that ownership;tv folder list [<folder-id>](issue #56) browses only a folder's immediate child folders/files one level at a time -- never a recursively flattened subtree -- defaulting to the caller's own default Root Folder when the ID is omitted, keyset-paginated (--limit/--cursor) with archived entries opt-in (--include-archived) and no bytes/URLs/tags/metadata/grants/audit history on any row;tv metadata listdiscovers every active custom metadata definition;tv admin folder list|deactivate(every Root Folder regardless of owner or status) andtv admin metadata create|list|show|update|deactivateremain administrator-gated.tv admin user list|deactivate|rolemanages organization members and roles. Active members create user-owned groups withtv group create; owners and managers use invitations and role commands, while explicittv admin group list|members|remove-member|transfercommands provide audited administrator recovery without implicit membership.tv file access grant|revoke|listandtv folder access grant|revoke|listdelegate additiveread/write/manageaccess to users or groups; folder grants inherit through descendants, delegation is bounded by the caller's live authority and subtree, and there is no deny ACL.tv admin audit listretrieves the unified, filtered, keyset-paginated audit view.tv skill install|doctor|update|uninstall|exportinstalls, verifies, updates, and removes the bundledthalix-vaultAgent Skill for Claude Code/Codex, and exports ChatGPT browser guidance (#11); see Agent Skill.tv update [--rollback]fast-forwards a private-Git checkout install (git pull --ff-only), or verifies and atomically activates a signed release for a standalone install, detecting which applies automatically;--rollbackrestores a standalone install's one retained previous version. See Install and update from a private Git checkout and Install/Releasingtv(#12).
Behavioral contract
- Human-readable output is the default;
--jsonis available for automation. - Bare
tv,tv help, andtv --helpprint a grouped command listing to standard output and exit0;tv help <command>(ortv <command> --help) prints that command's full flag syntax. A usage error (unrecognized command, missing/invalid flag) prints only that command's one-line usage plusRun tv help for commands., never the full command list. See Command reference. - Failures return non-zero exit codes.
- JSON errors contain a stable error code, message, and correlation ID.
- Secrets, passwords, refresh credentials, and storage credentials are never printed.
- Access-reducing or destructive administrative actions request confirmation unless
--yesis supplied. - Uploads and downloads stream bytes and checksums rather than loading an entire file into memory.
- The supported initial file-size target is up to 1 GiB, subject to infrastructure verification.
- The implemented
tv versionreports the CLI development version, the backend as not connected, and — when running from a linked Git checkout — the checkout's commit, optional tag description, branch, and path. Full compatibility negotiation remains planned.
Production login defaults to https://vault.thalixinc.ai. The fallback device-approval flow's activation URLs begin https://vault.thalixinc.ai/cli/activate?code=. Development requires a running local application server and an explicit --base-url or THALIX_BASE_URL override. The browser create, poll, and decision handshake uses internal routes and is not a public API.
Implemented login behavior
Sign-in is email-and-password by default; wrong credentials and passwordless accounts return one uniform INVALID_CREDENTIALS error, and repeated attempts are rate-limited per email and globally. Successful login stores the issued opaque device token and safe metadata without printing the token. No CLI path parses, stores, refreshes, or transmits Supabase access or refresh credentials. tv whoami sends the opaque token only as a bearer to the internal Vault route and returns a verified safe account projection. tv logout clears locally after confirmed revocation or confirmed prior invalidation; uncertain or hostile responses preserve the credential for a safe retry.
Every CLI failure exposes a safe correlation ID. Network failures retain the validated request correlation, local authorization expiry keeps the last request correlation, persistence failure after issuance keeps the token-response correlation, and a pre-network failure uses a generated local correlation.
Credential-file paths, exact schema, permissions, atomic replacement, and path defenses are authoritative in Security and authorization and ADR-0005. Abuse accounting, audit, service-boundary evidence, secret exclusions, and cross-boundary correlation are authoritative in Audit and observability.
New here? Start with the Quick start for a 15-minute, copy-paste walkthrough with real command output. Continue with Getting started, Command reference, Automation output, Install and update from a private Git checkout, Install the standalone binary, or Releasing tv.