Servers

Your agent on your servers. You decide what runs.

An SSH gateway for AI coding agents, served as MCP tools. Agents run commands, move files and start long jobs on your hosts. Routine work passes your allow rules, and the rest waits for you.

npm i -g athenode
Install for free
  • Free and local
  • 21 MCP tools
  • Every action in the audit log
athenode.lan/p/shop-platform/sessions/5c1e7a9d-2b84-4f36-8e0a-91d3c6b2f470

shop-platform

    • Overview
  • Specs
    • Specifications
    • ToDos
  • Agent plugins
    • Plugins
    • Library
    • Imports
  • SSH Gateway
    • Connections
    • Live
    • History
    • Project settings

Deploy the checkoutClaude Code14:02:17

Pending approvalprod-api-1prodvia bastion-eu
sudo systemctl restart shop-api

Reason Restart the API so that it loads the new payment settings

No allow rule on this connection matches it.

  • 14:01systemctl status shop-apiAuto-approved
  • 13:59journalctl -u shop-api -n 50Auto-approved

The approval gate

What happens between a tool call and your server.

Commands, file operations, jobs and new health checks pass the same gate, and every action, approved or not, lands in History.

  1. The agent asks

    Each action names a connection and carries a required reason, whether it runs a command, a job, a file operation or a health check. You see the reason, and History keeps it.

  2. Denylist

    Global and per connection, matched against every part of a command. A match always waits for you and can never be always allowed, even in auto mode.

    Default patterns

    • rm -*r*
    • mkfs*
    • dd *
    • reboot*
  3. Mode and allow rules

    Each connection runs in confirm mode, the default, or in auto mode, and a session can override it. In confirm mode a call runs at once only when every part of the command matches an allow rule; wrappers such as bash, eval and xargs and output written to a file always ask. In auto mode everything not on the denylist runs.

  4. You decide

    The request waits in its session window: Approve, Reject, or Always allow with a pattern you can edit. Unanswered, it times out after 10 minutes by default.

  5. Run and audit

    It runs over SSH, through the connection's jump hosts. History records the decision, the matched rules, the command, the reason, the names of environment variables (never their values), the exit code and the output.

Connections

Your hosts, tagged the way you deploy.

Tag connections dev, rc and prod, reach private hosts through jump hosts, and put each connection in confirm or auto mode. Import the hosts you have in your SSH config.

athenode.lan/p/shop-platform/connections

Connections

  • All
  • dev
  • rc
  • prod
ConnectionStatusUptimeLoadDisk
prod-api-1proddeploy@prod-api-1.athenode.lan:22via bastion-eu2 healthy1 failing
OK41d 6h0.42 0.38 0.3163%
prod-db-1proddeploy@prod-db-1.athenode.lan:22via bastion-eu1 healthy
OK41d 6h0.18 0.22 0.2071%
rc-api-1rcdeploy@rc-api-1.athenode.lan:222 healthy
OK6d 2h0.35 0.30 0.2748%
bastion-euproddeploy@bastion-eu.athenode.lan:22
OK88d 14h0.02 0.03 0.0022%
dev-box-1devdeploy@dev-box-1.athenode.lan:22
Unreachable–––

Services and health checks

Know a service is down before your users do.

Give each service a check command, an interval from 30 seconds to a day and a failure threshold. Exit code 0 means healthy.

  • Every run ends healthy, unhealthy, timeout, unreachable or error.
  • Down and recovered alerts as desktop notifications in your browser and as a JSON webhook, HMAC-signed when you give it a secret.
  • Adding or changing a check passes the approval gate, like a command it runs.

prod-api-1Recent runs

  • shop-apiHealthy
  • payments-workerUnhealthy
  • nginxHealthy

systemctl is-active payments-workerRuns every 60 s, down after 3 failures in a row

More than one command

Jobs, files, and a live view of what agents do.

  • Jobs that outlive the connection

    Migrations and builds run as detached jobs. They keep going through SSH drops and gateway restarts; the agent follows their status and logs, and cancelling one passes the gate.

    • start_jobnpm run migrate
    • job_statusRunning for 4 min
    • job_logsThe last 50 lines of its log
  • Files over SFTP

    Read a config, write a patched one, list a folder, upload a build or download a dump, as the SSH user and through the same approvals. Transfers go between the host and the machine the gateway runs on.

    • read_file
    • write_file
    • list_dir
    • upload
    • download
  • Live and History

    Live lists the actions waiting or running in every session; open one to decide in its session window. History is the audit log of every action: the session, the reason, the command and what came back.

    • prod-api-1sudo systemctl restart shop-apiPending
    • rc-api-1docker compose up -dAuto-approved

Security

Your keys stay yours, and every action is on record.

Free, on your own machine

  • Secrets stay secret

    Keys and passwords are encrypted with AES-256-GCM and never sent to the browser or to agents.

  • Closed to the network

    The athenode daemon listens on the loopback address only, so other machines cannot reach it.

  • Host keys you trust

    A new host key shows its fingerprint and waits for your trust. A changed key is refused, and every jump host is checked the same way.

  • An audit log you keep

    History keeps every action for 90 days by default, and you set how long.

Pro

For teams on a self-hosted server

  • Accounts with single sign-on (OIDC) and OAuth 2.1 for agents, so every action has an account
  • Project roles: viewer, editor and owner
  • Only the user whose agent asked decides its approval
  • Shared and personal allow rules
  • Shared and personal SSH credentials
  • Audit export as CSV or JSON
  • SIEM forwarding over syslog or an HTTPS webhook; retention never deletes an entry before it is forwarded
  • Runs on your own PostgreSQL server
Read about Athenode Pro

For your agent

The SSH gateway module's 21 MCP tools.

The SSH gateway is one module of the athenode MCP server, so one MCP entry in your AI coding tool brings these tools with the others. Name a session with set_session_label to find it in History later.

Connect your AI coding tool

21 tools

  • add_service
  • cancel_job
  • copy_connection
  • download
  • exec
  • exec_output
  • get_connection
  • job_logs
  • job_status
  • list_connections
  • list_dir
  • read_file
  • remove_service
  • run_service_check
  • service_health
  • set_connection_description
  • set_session_label
  • start_job
  • update_service
  • upload
  • write_file

Add your first connection.

Start in confirm mode: the agent asks before every command until you write allow rules. Install Athenode, then run athenode init in a repository.

npm i -g athenode
Install for free