tart
Live terminal artifacts: dashboards that stay open, keep their own data fresh, and can be found again by name.
uv tool install tartifacts # the command is `tart`
An artifact is three files
spend.json manifest: what runs it, what produces its data, when that data expires
fetch.py writes JSON to tartifacts.data_path()
show.py render(state, console) returns any rich renderable
{
"title": "Cloud spend",
"run": "$TART_PYTHON show.py",
"data": "data/spend.json",
"fetch": "$TART_PYTHON fetch.py",
"stale_after": "4h",
"auto_refresh": true
}
$TART_PYTHON is tart's own interpreter — it already has rich and
tartifacts, so most artifacts need no uv environment of their own: one
~20 MB process instead of a resident uv run supervisor holding open a
second Python. Need more libraries? Any command works there, uv run --with pandas ... included.
from tartifacts import app, widgets
def render(state, console):
return widgets.stack(
widgets.header(f"{len(state['data']['rows'])} rows"),
widgets.trend(state["data"]["daily"], style="green"),
)
app.run(render=render)
render() can return any rich renderable. tartifacts.widgets adds the
few things rich lacks for a live dashboard: a scrolling cursor, sparklines,
height budgeting, key bindings. Use them or don't.
Quick start
tart register path/to/spend.json
tart run spend # from any directory
Registering a manifest trusts it. One that tart finds by scanning needs
tart trust <name> first, and editing either asks again.
CLI
tart list # what's declared, what's live
tart run <name> # launch, fetching first if stale
tart render <name> [--json] # one frame headless, or the numbers as JSON
tart fetch <name> # re-run its data command
tart logs <name> # the last fetch's outcome and output, even from cron
tart cron <name> # a crontab line that keeps it fresh, PATH included
tart register <path> # adopt a manifest from anywhere
tart trust <name> # approve a scanned manifest
tart roots add <path> # a workspace to scan
tart --skill # full reference, written for agents
Examples
Eight working artifacts in examples/: local Claude Code
agents, ad spend, newsletters, open issues, battery, Wi-Fi, cron, disk.
Copy one, change the fetch.
Metadata
Release files for tartifacts 0.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 | |
|---|---|---|---|
| tartifacts-0.3.0.tar.gz | 107.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tartifacts-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 174.6 kB
Release files / tartifacts-0.3.0.tar.gz
| Download URL | tartifacts-0.3.0.tar.gz |
|---|---|
| Size | 107.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0e1c596e27282a31c5e59a17bc4f0ea62b804d7d955df3a3de12a902da1e840d
|
|
BLAKE2b-256 checksum How to use checksums |
0d717dab2c2e0a17ed0b192957041cbb115226c55bbb067411fc14736b2cd1de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.11
|
Release files / tartifacts-0.3.0-py3-none-any.whl
| Download URL | tartifacts-0.3.0-py3-none-any.whl |
|---|---|
| Size | 67.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
41794be26299a424bbd4a8d0df6faed506e7364db70e4122e6c88a8ca758b343
|
|
BLAKE2b-256 checksum How to use checksums |
a008be34f3ee91846cba39d12106e52e003733373fee498c6e654d12421b19ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.11
|