Every day

AI agents

Claude Code, Codex, Cursor, Gemini, Copilot, OpenCode and Hermes on the server — how they are installed, what context they get, and where you sign in.

Pupitre installs the agents; you bring the subscriptions. Nothing is resold, and no token of yours is stored on the platform.

What gets installed

ai.claude puts down the native binary Anthropic publishes, for this architecture, and refuses it unless its checksum matches the one the release manifest announces. ai.codex goes through mise, which pins and upgrades Codex the way it does a runtime and drops it on the path of every shell. ai.cursor puts down the Cursor CLI package the way Cursor’s own installer does — under its version in ~/.local/share/cursor-agent, the agent and cursor-agent commands linked from ~/.local/bin — without running that installer. ai.gemini and ai.copilot go through mise like Codex, for Gemini CLI and the GitHub Copilot CLI. ai.opencode puts down the static binary of OpenCode’s GitHub release and refuses it unless its digest is the one GitHub publishes for the asset. ai.hermes runs the Nous Research agent on the Python runtime, with the model providers you configure.

All seven land in the dev account, on the same machine, and can live side by side.

Signing in

ai.claude, ai.codex and ai.cursor sign in the way they do anywhere: the tool prints a URL, you open it in your browser, you approve. The app shows the terminal where that happens, so the flow is the one you already know — it just happens on the server, and the credentials stay there. For Cursor the command is NO_OPEN_BROWSER=1 cursor-agent login; without it the CLI tries to open a browser the server does not have. For Gemini it is NO_BROWSER=true gemini, which prints the URL and takes back the code you paste. ai.copilot goes through copilot login and the device code, on your Copilot subscription. The free tier of a Google account is enough for Gemini: it is the agent to try before paying for anything.

ai.opencode is tied to no provider: it starts on the free models it ships with, and opencode auth login connects a Claude, ChatGPT or GitHub Copilot subscription, or the key of any provider it knows. The dashboard names the ones it holds a credential for.

ai.hermes has no such flow: it talks to the providers whose keys you gave at install time, and those keys sit in a file only root can read.

The context they read

Every agent module writes the same machine context, under the name its tool reads — CLAUDE.md for Claude Code, GEMINI.md for Gemini, copilot-instructions.md for Copilot, AGENTS.md for Codex, OpenCode and Hermes. Cursor is the exception: it has no global rules file, your rules live in your account, and the skills carry what the machine has to say. It says the plain things an agent working here needs to know: that this is a Linux server and not a workstation, where the projects live, that servers are driven with the tools of the pupitre MCP server, or the dev command, rather than started by hand, and that secrets come from the machine’s own secret store rather than from a committed file.

Beside it come the Pupitre skills, in ~/.agents/skills and in the tool’s own folder:

  • server-dev — start and diagnose a project with the MCP server or dev;
  • project-env — read a project’s port, addresses and domain from its PUPITRE_* variables instead of hardcoding them;
  • branch, pr, ship — commit, push, open a pull request, in the repository’s own convention.

Claude Code also gets the git-shipper subagent. Updating a module rewrites the context and the skills; uninstalling takes back what the module wrote and leaves your conversations, your credentials and the skills you added yourself.

From your own client

You do not have to open an agent from Pupitre. The Claude desktop app takes an SSH connection with the key the app generated, and the ChatGPT desktop app reads the host aliases of your ~/.ssh/config to run Codex there. Either way the agent runs on the server, in your projects, on the runtimes the modules installed. The whole setup is on your own client.

Where an agent opens

The app opens an agent in the project folder, not in a home directory. The project’s own instruction files are there, and so are the skills above.

The MCP server

Claude Code and Codex also get Pupitre’s MCP server: tools to start a project and wait for it, read its logs, restart a service, and, with ai.browser installed, take a screenshot of a page and see the image. That is what lets an agent look at the page it just changed instead of describing what it thinks it did. See MCP server.

Running overnight

An agent started in a tmux session keeps working when you close the app. That is the point of the machine: a long task does not need your laptop to stay open, and a build does not need your fans.

What Pupitre does not do

It does not choose a model for you, does not proxy your requests, and does not read your conversations. It installs the tools, gives them the context of the machine, opens them in the right folder, and shows you the terminal.