EARLY ACCESS

A terminal that thinks before it runs

Dynozen is a desktop SSH client with an AI agent that investigates your servers: it runs read-only diagnostics first, explains what it found, and pauses for your approval before anything changes state. Everything stored locally.

Download See how it works
Free · v0.1.0 · macOS (Apple Silicon) Dynozen desktop app: an SSH terminal on the left and the AI investigation agent on the right, checking the OS and Docker before setting anything up.
WHAT IS DIFFERENT

An agent that investigates, not chats

Ask the question you actually have, like why is nginx returning 502?, and it runs the diagnosis itself: unit status, error logs, the journal. Read-only first, every time, streamed into your terminal.

↳ ran systemctl status nginxread-only
↳ ran tail -n 2 error.logread-only
↳ ran journalctl -u php8.2-fpmread-only
→ root cause: oom-kill, 03:07

The Approve / Deny gate

Anything that changes state (restart, kill, rm, anything under sudo) pauses behind one card: the purpose and the exact command. Nothing runs without your word.

CONFIRM

Deny is final

A denied command is never retried and never rephrased into a second attempt. The agent stands down and stays read-only.

Verified, not assumed

After an approved fix the agent re-runs the same reads that found the problem: unit state first, then the failing request itself.

An audit trail by default

Every session leaves a log: each command, who ran it, read-only or approved. No summary to trust, just a log to read.

03:14:06 agent systemctl status nginx · read-only
03:15:40 you APPROVE systemctl restart php8.2-fpm

It reads your terminal

The agent sees the same screen you do. Ask about the output in front of you, with no copy-pasting production logs into a chatbot tab.

CONTEXT · CURRENT TERMINAL

Bring your own model

OpenAI, Anthropic, Google Gemini, or any OpenAI-compatible endpoint. Your API key, called directly from your Mac, with no middleman between your servers and your model.

OPENAIANTHROPICGOOGLE GEMINICUSTOM

Table stakes, included

The parts every SSH client has: present, working, not the story.

terminal tabs & split panes SFTP with pause / resume -L and -R tunnels ProxyJump bastion chains encrypted vault (AES-256-GCM) server groups quick commands ~/.ssh key import host key pinning (TOFU)
ONE REAL CASE

Careful by design

Not a promise, but a transcript. Checkout went down at 03:07; here is the whole investigation, exactly as the agent panel shows it. The Approve button is yours.

READS
ran freely, streamed to the terminal
WRITES
one restart, behind your approval
PROOF
the failing request, repeated: 200
Agent · prod-web-01SAT 03:14 UTC
Why is nginx returning 502?
RAN systemctl status nginx --no-pagerread-only
RAN tail -n 2 /var/log/nginx/error.logread-only
2026/07/11 03:12:40 [error] 812#812: connect() to unix:/run/php/php8.2-fpm.sock failed (2: No such file or directory) while connecting to upstream, request: "GET /checkout HTTP/1.1"
RAN systemctl status php8.2-fpm --no-pagerread-only
RAN journalctl -u php8.2-fpm -n 2 --no-pagerread-only
Jul 11 03:07:12 systemd[1]: php8.2-fpm.service: A process of this unit has been killed by the OOM killer.
Jul 11 03:07:12 systemd[1]: php8.2-fpm.service: Failed with result 'oom-kill'.
Root cause: php-fpm was killed by the OOM killer at 03:07 and stayed down; the unit has no Restart= policy. nginx is healthy; it lost its upstream. Restarting restores checkout; the memory spike deserves a follow-up.
CONFIRMConfirmation required
Purpose: Restore the upstream so nginx stops returning 502.
sudo systemctl restart php8.2-fpm
RAN systemctl is-active php8.2-fpmread-only
active
RAN curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1/checkoutread-only
200
Resolved. Six reads, one approved write, and the full session log stays on your Mac. Follow-up worth doing: this unit has no Restart=on-failure; drafting the override would be its own CONFIRM.
Understood, denied. I will not run it and I do not retry denied commands. The diagnosis stands; the restart is yours to run by hand whenever you choose. I stay read-only.
TRUST MODEL

Your keys never leave your machine

Not a badge wall. The actual permission boundary, in one table.

READS
Run freely and stream into your terminal in full. If the agent saw it, you can scroll to it.
WRITES
Paused behind a confirmation card: purpose, exact command, Approve or Deny. A denied command is never retried.
YOUR KEYS
Imported from ~/.ssh, stored in a local vault (AES-256-GCM, Argon2). No account, no cloud, nothing leaves this Mac. Host fingerprints are pinned on first connect.
YOUR MODEL
OpenAI, Anthropic, Gemini or any OpenAI-compatible endpoint. Your API key, called directly from your machine.

Get Dynozen

Free · v0.1.0 · macOS (Apple Silicon)