uptonica
The Uptonica command-line client for developers, agencies, and anyone automating their workspace — one binary, scope decided by the token you configure, not by which command you type.
Install
pip install uptonica # or: uv tool install uptonica
Log in
uptonica login
Opens your browser, you confirm the code and pick which workspace(s) and
areas the token should reach, and the token comes back to the CLI on its
own — no copy-paste. (On a machine with no browser, uptonica login --no-browser prints the URL and code to visit instead.)
Prefer to mint the token yourself? Go to Settings -> API Tokens in your
Uptonica workspace (https://app.uptonica.com/account/api-tokens), pick
"Terminal access", choose scope, copy it, then:
uptonica config set-token
Use it
uptonica whoami
uptonica tenant use my-store # set a default so you don't repeat --tenant
uptonica tools --search contact # find a tool without scrolling the whole catalog
uptonica tools --show catalog.product.get # see its full description + parameters
uptonica call catalog.stats.summary
uptonica call crm.contact.create_task --arg title="Follow up" --arg priority=2
uptonica ask "quanto ho venduto questo mese?"
If your token reaches more than one workspace, --tenant on any command
overrides the default for that one call.
A write tool that needs confirmation returns a confirmation_token; re-run
the same command with --confirm <token> within ~15 minutes to actually
apply it. --dry-run previews a write without executing it. A tool name
that doesn't exist gets a "did you mean" suggestion instead of a bare error.
Ask in natural language
uptonica ask "<message>" skips the tool catalog entirely — Lia (the same
assistant behind chat and the mobile app) reads your request and picks the
tool(s) herself, with the same per-tool permissions she already has
everywhere else. A workspace's conversation continues across calls by
default, so a follow-up like uptonica ask "sì" answers whatever Lia just
asked (she always asks before a write, same as chat). Use --new to start a
fresh thread, or --conversation <uuid> to pick a specific one.
Run uptonica with no arguments (or uptonica ask with no message) to open
an interactive session instead — one process for the whole conversation,
with /workspace to list or switch workspaces, /new for a fresh thread,
and /help for the rest. Ctrl+D exits. Enter sends a message;
Option+Enter (Alt+Enter) starts a new line without sending. Every tool
Lia calls shows up live (◐ catalog.stats.summary... → ✓), so a slow
answer never looks like it's just hung.
For AI agents
If you're an agent (Claude Code, Codex, or anything else) about to drive this CLI on someone's behalf, read AGENTS.md first — discovery order, how to handle a multi-workspace token, and the dry-run/confirm flow for writes.
Claude Code users: this repo is also a plugin marketplace, so you don't need to clone anything to get that guidance loaded automatically:
/plugin marketplace add tonic-tech/uptonica-cli
/plugin install uptonica@uptonica-cli
Status
Actively developed — v0.2.2, built directly on the same tool API that powers Uptonica's in-app assistant. See the repo issues for what's still open.
Metadata
Release files for uptonica 0.2.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| uptonica-0.2.9.tar.gz | 66.7 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| uptonica-0.2.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 113.4 kB
Release files / uptonica-0.2.9.tar.gz
| Download URL | uptonica-0.2.9.tar.gz |
|---|---|
| Size | 66.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6d37244f5f602ac5b8870bc10b5e6eae4ae63945c70dd4234e223d956a2ede6d
|
|
BLAKE2b-256 checksum How to use checksums |
47ee4b68798c9f19968ec2835fe86abc48f1b88f3b0a8c3c861ceaf8c1332e8d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / uptonica-0.2.9-py3-none-any.whl
| Download URL | uptonica-0.2.9-py3-none-any.whl |
|---|---|
| Size | 46.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c8eedb59bfd934fb79518402fe0d48a3481ebf2b6ba1b3929561e638b1071419
|
|
BLAKE2b-256 checksum How to use checksums |
e7f8ba53bd85746f42d79b86155d1bd2261a76d431240b004ea42bf1778a8ebb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logSecurity for uptonica 0.2.9
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for uptonica-0.2.9.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.