Documentation
Ops apps
Processes, containers, environments, webhooks and deploys.
On this page
Overview
Five apps for the machine underneath the work: what is running, what is in containers, what is in the environment, what is arriving over HTTP, and what is deploying.
None of them have a tde agent verb. Agents drive them the same way they drive
any other window — with the generic screen, key and mouse verbs in the agent
API.
TDE Process
A pik-inspired process viewer. The table carries USER, PID, CPU%, MEM,
TIME, CMD, PATH, and refreshes every ten seconds — or immediately when you
press r.
Focus moves through a ring: the search field, the scope pill, the column header, the table, and the Kill button.
| Key | Action |
|---|---|
/ | Search |
↑ / ↓ | Move focus, or move the selection in the table |
← / → | On the header, cycle the sort column |
Home / End | First / last row |
Enter, Space | Activate whatever is focused — on the table, that is Kill |
x | Kill the selected process |
r | Refresh now |
Esc (in search) | Clear the filter |
q | Close the window |
Search is a plain substring match — there is no query syntax — but it is matched against the process name, user, command line, executable path, PID and parent PID at once, so typing a port-less fragment of a command finds it.
Sorting is available on three columns: Name, CPU and MEM, defaulting to MEM descending. Pressing the same column again flips the direction. The scope pill toggles between Apps only and All processes; the former hides kernel threads and OS daemons.
The kill re-validates the process identity it captured before signalling, so a recycled PID does not get the signal meant for something else.
TDE Container
Docker, straight over the socket. TDE Container talks to the daemon through the
Rust bollard client and never shells out to the docker CLI — so it works
on a machine where the CLI is not installed, and it respects DOCKER_HOST.
The list shows NAME, IMAGE, STATE, STATUS, UPTIME. Opening a container gives seven tabs: Overview, Networking, Ports, Volumes, Command, Logs, Processes, all derived from a live inspect, plus one-shot stats rendered as sparklines.
| Key | List view | Detail view |
|---|---|---|
↑ ↓, j k | Move the selection | Move focus or scroll |
Enter, →, Space | Open the detail | Activate the focused element |
1–7 | — | Jump to a tab |
/ | Filter the list | Filter Logs or Processes |
c | — | Clear the active filter |
r | Refresh | Refresh |
s / t / e | Start / stop / restart | Same |
x, Delete | Remove | Remove |
Esc | Close the window | Back to the list |
Every write action raises a confirmation dialog first.
TDE Env
An editor for environment variables, in two modes.
Project mode discovers a directory's .env* files and edits their key/value
pairs in a table, writing back while preserving comments, ordering and quoting.
It applies the Vite/Next precedence you already expect, highest first:
.env.<mode>.local
.env.<mode>
.env.local
.env.env.example is listed and editable but excluded from the merged result, so a
committed template never leaks into the effective environment.
System mode is a pinned source at the top of the sidebar showing the process environment.
| Key | Action |
|---|---|
Ctrl+S | Save the file, or apply System edits for this session |
Ctrl+P | Persist System overrides to disk |
Ctrl+R | Reload |
Ctrl+E | Reveal masked values |
Tab | Cycle sidebar, editor and the action row |
↑ / ↓ (sidebar) | Switch source |
q | Close the window |
Values are masked when the key ends with _KEY, _TOKEN, _SECRET or
_PASS, or contains PASSWORD or APIKEY. Ctrl+E reveals them.
Ctrl+G in TDE Shell opens TDE Env at
that shell's current directory.
TDE Webhook
A local inbound receiver so you can see exactly what a third party is posting
to you. It is deliberately passive: it acknowledges every request with a 200,
keeps the newest captures, and never forwards or acts on a payload.
Press Start and it binds an ephemeral port on 127.0.0.1 — there is no
fixed port to remember, and nothing is listening until you ask for it. Copy
URL puts the endpoint on your clipboard.
Three panes: Endpoints (derived from the distinct paths you have actually received), Deliveries (newest first), and a Delivery details drawer with the timestamp, peer IP, method, path, headers and body.
| Key | Action |
|---|---|
← / → | Move across Actions, Endpoints, Deliveries and Details |
↑ / ↓ | Move within the focused pane |
PageUp / PageDown | Scroll by 8 |
Home / End | Top / bottom |
Enter, Space | Run the focused action, or select |
Esc | Close the details drawer, then the window |
Captures cap at 200 requests and bodies at 256 KiB (the sender still gets its
200). History is kept at ~/.tde/webhook/captures.v1; Clear deletes it.
Receiving from the internet
The Public action exposes the receiver through a Tailscale Funnel. It needs Web Share running with its reach set to Public; until then the button reads Web Share and takes you to that panel instead. Stopping the receiver tears the funnel down.
TDE Vercel
A monitor for your Vercel deployments. Columns: STATUS, PROJECT, ENV, BRANCH, COMMIT, AGE, AUTHOR, MESSAGE, with statuses bucketed into Ready, Building, Queued, Error, Canceled and Unknown.
Connect once with a token and, optionally, a team. The Team field accepts
either a team_… id or a team slug. The token goes into the encrypted
vault; only the team and the refresh cadence
are written to ~/.config/tde/vercel.toml. Disconnecting deletes the vault
entry.
| Key | Action |
|---|---|
r | Refresh |
Enter, Space | Open the build logs for the selected deployment |
o | Open the deployment in the browser |
y | Copy its URL |
c | Cancel it — in-flight deployments only, with a confirmation |
t | Back to the connection settings |
↑ / ↓, Home / End | Move the selection |
Tab, → | Focus the toolbar |
Esc, q | Close |
In the log view, ↑ and ↓ scroll a line and PageUp/PageDown scroll
twenty; scrolling turns follow-mode off so the tail stops jumping away from
you. Esc goes back to the list.
The list refreshes every 30 seconds by default, and will not go below 5.