Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tart

Live terminal artifacts: dashboards that stay open, keep their own data fresh, and can be found again by name.

claude-swarm

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 --sync             # standing cron block: auto_refresh artifacts stay fresh unattended
tart restart --all           # re-exec live artifacts in place — same pane, new code
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

Nine working artifacts in examples/: local Claude Code agents, ad spend, newsletters, open issues, battery, Wi-Fi, cron, disk, and a directory explorer whose c key opens a fresh Claude Code instance in a new herdr split at the selected directory. Copy one, change the fetch.

About

Live terminal artifacts

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages