Agent-first CLI for Tarnished
Project description
Tarnished CLI
Agent-first command-line interface for Tarnished.
Install
Supported install path:
brew tap markoonakic/tap
brew install tarnished-cli
For local release verification only:
uv tool install ./dist/tarnished_cli-<version>-py3-none-any.whl
Authentication
Tarnished CLI is API-key-first.
- Create or rotate the API key in the Tarnished web app.
- Prefer the CLI preset so the key includes the scopes the CLI expects.
- Validate and store the key locally:
uv run tarnished auth init --api-key '...'
- Run the auth doctor to confirm the stored key, live auth check, and required CLI scopes all pass:
uv run tarnished auth doctor
uv run tarnished auth whoami
- Clear the locally stored key when needed:
uv run tarnished auth api-key clear
The web app remains the source of truth for API keys. The CLI does not create, rotate, revoke, or otherwise manage remote API keys.
Development
cd cli
uv sync
uv run tarnished --help
uv run pytest -q
Release
The repository release workflow builds CLI distributions, publishes them to the GitHub release, publishes the CLI to PyPI by default, and then updates the Homebrew tap from the released PyPI sdist.
One-Time PyPI Trusted Publishing Setup
- Create the
tarnished-cliproject on PyPI. - In the PyPI project settings, add a Trusted Publisher for this GitHub repository.
- Use these values:
- Owner:
markoonakic - Repository:
tarnished - Workflow name:
release.yml - Environment name:
pypi
- Owner:
One-Time Homebrew Tap Automation Setup
- Create a write-enabled deploy key for
markoonakic/homebrew-tap. - Add the private key to this repository as the
HOMEBREW_TAP_DEPLOY_KEYsecret. - The release workflow will:
- update
Formula/tarnished-cli.rbfrom PyPI metadata - refresh Python resource blocks with
brew update-python-resources - build the formula from source and run
brew test tarnished-cli - push the tap update to
markoonakic/homebrew-tap
- update
Release Outputs
The release workflow publishes:
cli/dist/*.whlcli/dist/*.tar.gz
to the GitHub release, publishes to PyPI, and updates the Homebrew tap.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tarnished_cli-0.1.7.tar.gz.
File metadata
- Download URL: tarnished_cli-0.1.7.tar.gz
- Upload date:
- Size: 50.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83f55d9fa5a099bdf1c46f2ca44d45e1cc744abc2fa6fc8cfb64cd8a4ccbdd7a
|
|
| MD5 |
a53e3dde588046d89c8202db8a2f9a59
|
|
| BLAKE2b-256 |
d9b3157dbdda75d1d8eaa56a00f37dcd93007fa53982f22e5e55866cdef362ea
|
Provenance
The following attestation bundles were made for tarnished_cli-0.1.7.tar.gz:
Publisher:
release.yml on markoonakic/tarnished
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tarnished_cli-0.1.7.tar.gz -
Subject digest:
83f55d9fa5a099bdf1c46f2ca44d45e1cc744abc2fa6fc8cfb64cd8a4ccbdd7a - Sigstore transparency entry: 1280188017
- Sigstore integration time:
-
Permalink:
markoonakic/tarnished@847cb5bc4c9639c7149cc2c623a5db0527d9b3e1 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/markoonakic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@847cb5bc4c9639c7149cc2c623a5db0527d9b3e1 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tarnished_cli-0.1.7-py3-none-any.whl.
File metadata
- Download URL: tarnished_cli-0.1.7-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6cbb8e77d74cc961cbb2a6be00b63824b0e794c60f99e190fa9259ebb765db1
|
|
| MD5 |
02cf81cbac098cdc90618aa54aa302da
|
|
| BLAKE2b-256 |
014e579ba0f9be6cb206eef20d03b74c0838c1580d46db4e782ed1d6375365c2
|
Provenance
The following attestation bundles were made for tarnished_cli-0.1.7-py3-none-any.whl:
Publisher:
release.yml on markoonakic/tarnished
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tarnished_cli-0.1.7-py3-none-any.whl -
Subject digest:
f6cbb8e77d74cc961cbb2a6be00b63824b0e794c60f99e190fa9259ebb765db1 - Sigstore transparency entry: 1280188027
- Sigstore integration time:
-
Permalink:
markoonakic/tarnished@847cb5bc4c9639c7149cc2c623a5db0527d9b3e1 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/markoonakic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@847cb5bc4c9639c7149cc2c623a5db0527d9b3e1 -
Trigger Event:
workflow_dispatch
-
Statement type: