Home
Projects
Quick actions
Shells
No shells running. Tap + to start Claude in a project, or open a plain shell.
Services
Files
Empty folder. Upload something, or create a file or folder.
Shells here
More
Connections
Vault
Tokens are encrypted on the box. Agents fetch them per command with vault run or vault get, and each use is in the audit log. General tokens work from any folder; project tokens only from that project's main folder. A general token can also be put into every new shell (its switch below), but uses after that are not logged.
No tokens yet. Add an API key or OAuth token and label what it is for.
Shared credentials
Logins and keys an agent handed to you with credshare: generated passwords, test accounts, admin logins. Separate from the Vault, which holds the tokens agents use. Kept 7 days; tap a card to copy fields or open the service.
Nothing shared yet. When an agent runs credshare the card lands here and on that shell.
Security
This app is root-level control of the box. Keep two-step codes on and sign out of devices you no longer use. Lost your authenticator? Run box.ps1 reset-totp from the laptop.
Backups
One archive per run: the project's backup.paths plus every data folder its containers mount, with owners kept, to your bucket under <project>/<time>.tar.zst. The service is frozen for the seconds the files are read, never stopped. Restore stops the service, keeps what was there in .porthole/restore-undo-…, puts the archive back and starts it again. The bucket key stays in the Vault and is never given to agents.
Alerts
Alerts say what happened and link back here. Allowing or denying root is only ever done in PlatOpypus after you sign in, never from Telegram. Messages carry project names, and for root requests the command as asked; never Vault values, output or logs. PlatOpypus reads the bot token itself to send; agents never get it.
Audit log
Kept on the box in ~/.porthole/audit/, one file per day: who asked, from which project, commands as asked and the names of Vault values. Never secret values or command output. Agents cannot read it. Commits come from each project's git history (last 14 days). Network lists new connections made by the agent user and service accounts (not root), last 7 days. The page shows 30 days; the box keeps 90.
AI agents
Sign in opens a shell running the agent's login; follow the link it prints and paste the code back. Claude profiles are separate config folders, so each can be signed in to a different account.
GitHub
Your repositories
Everything you build here can live in GitHub, so the box is disposable: push your projects, export the vault, run terraform destroy.