Setup guide

Open a terminal on your Django server

From the FetchNode dashboard you can run a few predefined checks, or a shell, on a server you already operate. The connection starts on that server. FetchNode cannot turn it on.

Turn it on locally

Install or upgrade the fetchnode package you already use for monitoring. Then set these values in the server environment and restart the app process. Do not commit the private key the package creates.

FETCHNODE_TERMINAL=true
FETCHNODE_TERMINAL_MODE=actions
FETCHNODE_TERMINAL_USER=www-data

actions exposes four buttons: live log tail, app restart, migrations, and disk and memory status. Restart runs only when you also set FETCHNODE_TERMINAL_RESTART_COMMAND yourself. Log tail reads FETCHNODE_TERMINAL_LOG_PATH when that absolute file path is set, plus a short in-process buffer.

Shell access is a separate local choice:

FETCHNODE_TERMINAL_MODE=shell

The shell runs as the user that is already running Django. That user must match FETCHNODE_TERMINAL_USER when you set it. The agent refuses to run as root and will not switch users.

What happens when you open it

  1. The package creates an Ed25519 key on the server and registers only the public key with this website’s project.
  2. It opens an outbound websocket to FetchNode. You do not open an inbound port or upload an SSH key.
  3. In the dashboard, a manager confirms their password and an email code, then receives a session token that expires in a few minutes.
  4. FetchNode checks that token, and the package checks the signature again before it runs anything.

The terminal is available on the Founding and Portfolio plans. Turning the relay off in the dashboard stops new sessions. It does not edit the server’s environment, so the only way to enable the agent is still the local setting.

What it will not do

A terminal session does not deploy your site, repair an error, or prove that a change is safe. A coding agent can request disk and memory status or the recent log through MCP. It cannot request a shell, a restart, or migrations. Commands and output are stored with the website’s session history for the people who can manage that website.

Run one agent for a server. The package keeps a single local lock so extra Gunicorn workers do not open extra connections. For a dedicated process instead of autostart, set FETCHNODE_TERMINAL_AUTOSTART=0 and run python manage.py fetchnode_terminal.