PoolTerminal
v0.3.0 · available now Beta · in active development

The pool operator's
operational terminal.

A Bloomberg-terminal-style desktop dashboard for Cardano stake pool operators. It connects to your own node and surfaces the operational data that's otherwise locked away in logs, databases, Prometheus endpoints and cardano-cli.

DenseReal-timeRead-onlyRuns on your machine

Linux · AppImage or .deb. This is beta software running daily against a live block producer — expect rough edges, and tell me what breaks.

The real PoolTerminal frontend, running here in Demo mode - every figure is synthetic, no node behind it. Click the tabs. See the full gallery for every view.
What it is

Everything your pool is doing, in one place.

Running a Cardano stake pool produces a torrent of operational data. Existing tools surface a fraction of it. PoolTerminal pulls it all together, visualises it properly, and stores history locally so you can see trends over weeks and months - not just snapshots.

01 / DENSE

Data nothing else surfaces

Op-cert counter health, sub-second block propagation, real transaction-demand flow, delegator loyalty rankings, per-epoch reward splits down to your own SPO earnings.

02 / READ-ONLY

Your keys never leave your node

No transaction signing. No key access. No node control from the GUI. PoolTerminal observes and reports - it does not act. It stores nothing on anyone else's servers.

03 / YOURS

Runs on your machine

A desktop app that connects to your node over SSH, or runs on the node itself. History is cached locally. Optionally enriched by your own db-sync, Koios, or Blockfrost.

Who it's for

Built for Stakepool Operators.

If you run a Cardano stake pool and want to see what's really happening - beyond gLiveView and generic chain explorers - this is for you. Whether you're chasing a missed block, watching a delegation shift, or just keeping an eye on KES and mempool, it's the operational view SPOs have been missing.

Release · 4 August 2026

New in v0.3.0.

A correctness release for delegator figures rather than new surface area.

FIXED

Transfers appear in movements

A stake account's movements now show the ADA actually moved in and out per transaction. Previously only rewards and withdrawals were listed, so a plain transfer appeared nowhere.

FIXED

The snapshot is labelled honestly

The per-epoch active-stake table no longer presents the next epoch's already-taken snapshot as though it were the current one.

Release · 30 July 2026

New in v0.2.0.

Two new workspaces, a redesigned KES gauge, and delegator figures that now reconcile against live account state.

NEW

The LOGS workspace

Journal queries, your full minted-block history from CNCLI or db-sync, a persisted propagation record that catches slow blocks long after they scroll away, and an epoch-transition view that renders a fork boundary as something you can actually see.

NEW

ALERTS on Telegram

Six alerts to your phone with nothing installed on your block producer. Guided three-step setup, a Test button on every alert, per-alert thresholds, cooldown and quiet hours.

NEW

The KES hourglass

Key expiry as a volume-correct hourglass whose sand drains as the key ages, warming toward red as expiry nears, with the on-disk vs on-chain op-cert counter beneath it.

FIXED

Delegator balances reconcile

Per-epoch active stake and live balance are both shown and labelled, so a figure that reads a little under Cardanoscan is explained. Includes a real db-sync bug: rewards live in two tables, and summing only one drove totals negative after a treasury payout.

FIXED

The epoch boundary

A genuine payment landing in the same window as the epoch reward roll no longer gets swallowed - it fires, labelled excl. epoch reward.

HONEST

Credential storage, stated plainly

The old "secrets are never persisted" claim wasn't true. What's stored, where, and what each key can actually reach is now spelled out in the README, in SECURITY.md, and at the point you type the token.

The views

Eleven tabs, one terminal.

Each tab is a focused, live operational view. Everything repaints instantly from cache when you return to it, refreshing live behind.

DASHBOARD

Live epoch dashboard

Chain pulse, tip/sync, KES expiry as an hourglass whose sand drains as the key ages, the on-disk vs on-chain op-cert counter, an intelligent mempool panel with real KB/min flow, sub-second block propagation, upcoming leader slots with countdowns, and a live CIP-20 metadata feed.

HISTORY

Every epoch, back to the start

Blocks, ideal, luck, delegators, active stake, and a six-way reward split - including your own SPO earnings per epoch. Charts for blocks and luck over time.

DELEGATORS

Loyalty, stake & journeys

Every delegator in one sortable table with a computed loyalty ranking. Deep-dive any delegator: balance, rewards, a stake-history graph, and a pool-movement journey showing every pool they've ever delegated to. Figures are reconciled against live account state, so a number that reads under an explorer is explained rather than left looking like a bug.

NOTIFICATIONS

Delegation activity, live

Delegators joining, leaving, returning or moving stake - detected on-chain within minutes, colour-coded with from→to flows, amounts, and one-click transaction links. Epoch-boundary reward bumps are netted out precisely on db-sync, so only genuine activity surfaces.

NODE HEALTH

Host & process metrics

CPU, memory, peers and node-process resources with historical samples, so you can see how your machine trends over time.

LOGS

Diagnostics without a shell

A read-only workspace over your node's journal and CNCLI data - every query bounded and run at low priority so it never competes with block production. Errors, restarts, rollbacks and KES status in one click; your full minted-block history; and a propagation record that keeps the slowest blocks long after they scroll off the dashboard, with an epoch-transition view that tells a real chain gap apart from PoolTerminal simply being closed.

ALERTS

Telegram, with no agent on your BP

Every other SPO alerting setup wants an agent, a cron job or a monitoring stack beside your node. PoolTerminal already receives this data every poll, so it just sends it on. Six alerts - KES expiry, node stall, block minted, slow propagation, mempool full, low peers - each with its own threshold, a Test button, a global cooldown and optional quiet hours.

DATA

Where every number comes from

A transparency screen showing exactly which source is answering each feature - your node, db-sync, Koios or Blockfrost - and what each optional source would unlock if you added it.

MAP

Your node & its peers

A full-size world map plotting your node and live peers, geo-located, with latency-coloured connections and geographic distribution. Cached offline after first load.

RELAY 1 / 2

Isolated relay dashboards

Each relay monitored independently, straight from its own cardano-node over its own connection - a stalling relay flatlines only its own heartbeat, never affecting the others.

SETUP WIZARD

Guided first-run

A step-by-step walkthrough: connect to your node, optionally add db-sync and Blockfrost. The db-sync path is a guided decision tree that can even generate and authorise an SSH key for you.

DEMO MODE

Try it with no node

Built-in synthetic pool data so you can explore the full interface before connecting anything real - the same data driving the live terminal at the top of this page.

Planned next: REWARDS and GOVERNANCE (DRep).

Open source & trust

Don't trust it. Audit it.

PoolTerminal touches your block producer, so its trust model is simple: the code is open, licensed Apache 2.0, and you're encouraged to read it before you run it. It's built with a security-focused approach, but the real safeguard is that you can check the code yourself.

  • Apache 2.0 licensed. Free to use, modify and build on. Every line on GitHub, nothing hidden.
  • Read-only. No command that modifies state on your node is ever issued. It observes and reports - it does not act.
  • Keys never leave the node. No keys, mnemonics or wallet files are transmitted anywhere.
  • Node credentials are never persisted. SSH passwords, OTP codes and key passphrases live in memory for the session only - never written to disk, in any mode. That's the one credential that could actually reach your node, so PoolTerminal asks again rather than keep it.
  • Some API keys are stored locally, on purpose. A Koios or Blockfrost key, a Telegram bot token, an opted-in db-sync password - unencrypted in PoolTerminal's own app-data directory, so the features still work after you close it. None can touch your pool, and the README says exactly which, where and why. Skip all four and the app is still fully functional.
  • No telemetry. It does not phone home. The only connections are your node, your db-sync if you use one, Telegram if you configure Alerts, and read-only public APIs. Nothing else.
~ build it yourself
# clone the source
git clone \
  github.com/GNP1-dev/PoolTerminal

# build the desktop app
cd PoolTerminal
npm install
cargo tauri build

# or grab the v0.3.0 release
# (AppImage or .deb, Linux)
 github.com/GNP1-dev/
     PoolTerminal/releases
Get started

See what your pool is really doing.

Grab v0.3.0 for Linux, or browse the screenshots first and follow the setup guide to get it running against your own node.