Security

You install our agent as root. Here is what it can and cannot do.

Pupitre puts a compiled binary on a server of yours, with root rights. That asks for trust, so the source is public, and every claim below comes with the command that checks it on your own machine.

Guarantees

Seven claims, each one checkable

Run the command on the server, or on your computer where it says so.

  • Nothing connects to your server.

    The app opens an SSH session from your computer; the agent only makes outbound HTTPS calls. Neither the platform nor support opens a connection to the machine. The firewall lets in SSH, and ports 80 and 443 only once you install Caddy.

    Check it sudo ufw status

  • Your private keys stay on your computer.

    The app makes its ed25519 keys in its own folder, in mode 0600. Only the public halves leave it: to the server's authorized_keys, and to the platform, which passes them to your organisation's servers.

    Check it cat ~/.ssh/authorized_keys

  • The platform cannot let anyone in.

    The agent adds a key only if a device it already trusts has signed an approval for it. The platform holds no private key, so it cannot make one up: a breach of our platform or of an admin session does not open your server.

    Check it sudo cat /etc/pupitre/signers.json

  • Your coding agents do not become root.

    Everything that runs as dev, your agents included, runs unattended. The hardening gives dev a sudo password that only your computer holds. Two exact command lines run without it, both the agent's own, and the session they open refuses whatever configures the machine.

    Check it sudo -l

  • Your published projects open only with a key.

    Every address the tunnel or Caddy publishes goes through a gate in the agent, and answers 401 to whoever has no access key. Keys are drawn on your computer, the server keeps only their hash, and opening a project to everyone takes your sudo password. Run the check from any machine.

    Check it curl -sI https://your-project.example.com

  • Nothing readable is left on the server.

    One compiled binary, generated systemd units and configuration files readable by root only. No script, no source. Your service passwords live in one file, on your server, and never reach the platform.

    Check it sudo ls -la /etc/pupitre

  • Your server does not need us to run.

    Stop the agent and everything else keeps running: projects, databases, services, SSH. Start it again with systemctl start. Cut off from the platform, the agent keeps working for seven days, then only stops accepting changes. It never shuts down what runs.

    Check it sudo systemctl stop pupitred

The platform

What we know about your server, and what we never see

What the platform stores

  • Your account, your organisation and the public keys of your devices.
  • For each server: its name, address, architecture and agent version.
  • The services and terminal sessions it runs, and its health readings over seven days.
  • The status of its backups: when, how big, whether they succeeded.

What it never receives

  • Your code, your files, your databases.
  • Your conversations with your agents. They go from your server to the model provider you chose, on your account.
  • Your passwords, tokens and API keys.
  • A shell, a support key or any other way into the machine.

Questions

The questions worth asking before you install

Can I read the code?

Yes. The code of the app, the agent and the platform is public, under the Apache 2.0 licence with the Commons Clause: you may read it, change it, build the agent yourself and run your own platform. The one thing the licence forbids is selling Pupitre, or a service built mainly on it.

You do not have to read the source to know what the agent did to your machine. Everything it installs is standard software, configured in ordinary files you can open, such as /etc/ssh/sshd_config.d/10-pupitre.conf or the Caddyfile. The documentation says what every module installs, changes and removes.

What the licence allows

What if Pupitre shuts down?

We cannot promise the company will be here forever. We built Pupitre so that your machine does not depend on it.

Without the platform, the app and the agent keep working for seven days. After that, the agent stops accepting changes and keeps everything that runs. You keep your server, with SSH as dev using your key, your editors and Claude or Codex over SSH, your services, databases and projects, and your backups in your own bucket. Nothing on it needs us to start, run or reboot.

How do I remove Pupitre?

One command on the server removes the agent, its services and its state. Your services, databases, projects, the dev user and the hardening stay, and so do your keys. Delete the server in the app or the console to free its seat.

sudo pupitred uninstall
What is removed, and what stays

Who builds Pupitre?

Jordan Monier, a Belgian developer based in Morocco, working alone, who runs coding agents on a VPS every day. Pupitre is the tool built for that work.

The rules on this page are written into the specifications the code is tested against. Each change goes through tests and is tried on throwaway Ubuntu servers, and Jordan Monier approves each release before it ships.