1 · push
The agent writes one value
Components, the data they bind to, keys and theme, as JSON. Small enough to write in one go.
$ fictty push deploy.json
{"root": {"type": "table",
"id": "svc", "bind": "services"},
"data": {"services": {
"cmd": ["kubectl", …],
"every": 2}}}2 · screen
The runtime makes it a screen
Drawing, scrolling, selection, focus, mouse and live data, at over 100 fps. Keys run locally; nothing waits on the model.
╭─ Services ────────────────╮
│ api-1 112ms ● healthy │
│ api-2 948ms ▲ slow │
│ web 64ms ● healthy │
╰───────────────────────────╯
3 · read back
The agent sees what it drew
The frame as text, or the whole state as JSON. Then it patches one node, or throws the screen away.
$ fictty get --state
{"focus": "svc",
"selected": {"svc": 1},
"row": {"name": "api-2",
"p95": 948}}