cytario-cli
CLI for working with Cytario storage connections as the signed-in user — designed for AI agents and analysts who need to work with connection data using the workstation's standard AWS tooling.
What it does
cytario auth login --host <url>— browser sign-in (OAuth 2.0 Authorization Code + PKCE against the deployment's identity service; a loopback redirect receives the result). The refresh grant is stored user-private (~/.config/cytario/cli,0600).cytario connections list [--json]— the connections visible to you, with the storage role and access level your grant resolves to.cytario connections setup [--all | <name>]— writes one AWS CLI profile per connection into~/.aws/config([profile cytario-<name>]) withweb_identity_token_file, soaws/ boto3 / pandas performAssumeRoleWithWebIdentitythemselves — with exactly your grant's authorization, never wider.cytario auth status [--json]— the signed-in host, user (Keycloaksub, email, name), and token state;--jsonemits it machine-readable (agents need thesubto address per-user files such assettings.<sub>.jsonview presets).cytario auth token/cytario auth refresh— a fresh ID token on stdout, and a rewrite of all managed token files (tokens live ~1 hour).
Agents: see the packaged skill file (src/cytario_cli/skills/cytario-cli.md)
for the tool-neutral agent workflow shipped with this repo — what Cytario is,
how its data (annotations, view settings, results, job configs) is laid
out in your buckets, and the CLI workflow on top.
Installing the skill
The skill file ships inside the PyPI package and is installed for your AI tooling with one command (no network fetch — the copy always matches the installed CLI version):
cytario skill install
The command probes the well-known skills directories of common AI tools
(Claude Code, OpenCode, Cursor, Codex CLI), shows what it found, and writes
the skill there. Re-running it after a CLI update refreshes stale copies
(a locally modified copy is never overwritten without --force). Useful
variations:
cytario skill list --json # what is detected, and the install state
cytario skill install --tool claude-code
cytario skill install --path ~/.my-agent/skills
For tools without a skills mechanism, paste the file's contents into your
agent's system prompt or project instructions — the file is self-contained
(cytario skill install --path <dir> writes it anywhere).
Install
uv tool install cytario-cli # or: pip install cytario-cli
Python ≥ 3.10. The CLI is a public OIDC client — no secrets are shipped or stored beyond your own refresh grant.
Usage
cytario auth login --host https://app.cytario.com
cytario connections list
cytario connections setup --all
aws s3 ls --profile cytario-mybucket
Host resolution order: --host, then CYTARIO_HOST, then the last
signed-in host. The host is the cytario web app (e.g.
https://app.cytario.com) — not the identity host (https://auth.cytario.com);
the CLI derives the identity endpoints from it automatically.
Security model
- Your authorization is exactly your Cytario grant on each connection
(
read-only/annotate/read-write/admin); bucket sharing stays confined to the web app. - No long-lived AWS keys are written; the AWS CLI federates per operation from the token file, and the CLI refreshes tokens before expiry.
- Revocation: revoking the CLI session in the identity service (or removing your group membership) ends the CLI's access within one token lifetime.
Development
uv sync
uv run ruff format --check && uv run ruff check
uv run pytest
Releases are cut by python-semantic-release on Conventional Commits and published to PyPI via trusted publishing.
License
MIT — see LICENSE.
Metadata
Release files for cytario-cli 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cytario_cli-1.3.0.tar.gz | 89.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cytario_cli-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 113.2 kB
Release files / cytario_cli-1.3.0.tar.gz
| Download URL | cytario_cli-1.3.0.tar.gz |
|---|---|
| Size | 89.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fe36fe57468035eca195f258dc5d1c491fe8e1784775ceb714cd19e7d2a71ef1
|
|
BLAKE2b-256 checksum How to use checksums |
07a5878405e34fbc9ddd00071ee8b2505612a71150cb26c6c169f7d1c37e0d03
|
| 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 30, 2026.
Transparency logRelease files / cytario_cli-1.3.0-py3-none-any.whl
| Download URL | cytario_cli-1.3.0-py3-none-any.whl |
|---|---|
| Size | 23.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9317070e6ee05dbd8c8149db8df83e3ccba2de00a4adc75556d70d22d7230f0e
|
|
BLAKE2b-256 checksum How to use checksums |
34af8a0dc87a7b388f67bac2437d497a0d63a6717d4f9f2bfc130959fa2b9c20
|
| 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 30, 2026.
Transparency log