A lightweight open-source agent on each node pulls SSH keys and sudo roles over outbound HTTPS. No inbound connections. No attack surface. All accounts are local, so everything works — even if Userify goes down.
This is what you actually see. Users on rows, server groups on columns. Red means root (sudo). Green means user. Gray means no access. Click a dropdown, change a permission — it's overwritten on every server in that group within seconds.
| INGEST412 | TRAINING1,024 | EVAL256 | SERVING640 | MONITORING515 |
|---|
Each server checks in on its poll cycle. If it misses a cycle or two, it goes stale and times out. What you see here is the actual state — which servers are alive, which are pulling keys, which have gone dark.
| Status | Hostname | IP | Instance | Last check-in |
|---|
Teams are already using Userify to distribute keys so Claude Code, Cowork, and other AI coding agents can SSH directly into infrastructure. No bastion hacks. No port forwarding. Just keys, deployed where needed, when needed.
Web terminals and sandboxed consoles don't cut it when your agent needs to debug a production incident, run Ansible across a fleet, or pull logs from a specific node. Userify gives your agents the same SSH access your SREs have — scoped to exactly the servers they need, revocable in milliseconds.
The shim makes a single outbound HTTPS call to your Userify server — whether that's Userify Cloud or your own self-hosted instance. Uses standard Linux utilities — useradd, sudo — and never touches PAM or NSS.
Userify Cloud gives you a one-line shim installer from your dashboard. Or bake it into your AMI, drop it in UserData, add it to your Terraform module, Ansible playbook, Chef recipe, or Puppet manifest.
You change a permission in the dashboard. Behind the scenes, the shim on every affected server pulls the new desired state and overwrites reality. No diff, no merge — just a complete overwrite.
Outbound HTTPS call to your Userify server with group credentials. Returns the complete list: users, public keys, sudo roles. That's the truth.
Missing users created with useradd. GECOS tagged {user}-userify. Existing keys overwritten — not merged. The dashboard is the single source of truth.
Public keys → authorized_keys. Sudo: root or user only. No custom sudoers. Plays nice with LDAP, NIS, anything — only touches *-userify accounts.
Any *-userify account NOT in the desired state: kill every process — daemons, tmux, screen, cron, everything. Home dir → /home/deleted:{user}. Account removed.
Machine matches desired state. If the connection fails — or if the shim dies — locally created accounts remain accessible. The shim restarts itself each cycle. Bulletproof.
We resist features for the sake of features because that's the fastest path to vulnerability. Local accounts, standard Linux tools, outbound-only connections, and a shim you can read in an afternoon. Elegant security through simplicity.
SSH, SFTP, SCP, tunnels, port forwarding, agent forwarding, multiplexing — all the power SSH gives, constrained by Linux's built-in authorization. Use Ansible, Fabric, csshX, or any SSH tool you want. Or sit back and don't deploy your key anywhere until the day you need it.
SSH, SCP, SFTP, tunnels. Not a browser terminal. Not a single-server portal. The real thing.
Your key isn't deployed anywhere until you need it. Drop into production in seconds. Pull it when you're done.
Shim baked into AMI or CloudInit. New instances join their node group automatically. No manual config ever.
All accounts are locally created. If Userify goes down, your access doesn't. If the shim dies, your accounts stay.
Every edition of Userify includes Active Termination — remove a user from the dashboard and their processes are killed on every server before the page finishes loading. With Userify Enterprise, you can trigger it directly from Active Directory.
disgruntled_kill_company.sh dies mid-execution./home/jdoe → /home/deleted:jdoe. Account removed. Keys gone. Evidence preserved.Zero-knowledge dashboard: if you don't have access to a company, project, or server group, it doesn't exist. All data encrypted at rest with Curve25519. Open-source shim on GitHub.
Unlimited users, keys, and projects. No per-seat fees. Billed hourly — only when a server is online and pulling updates. Perfect for auto-scaling.
Free for up to 5 servers. No credit card required. No expiration. Or email us for Enterprise pricing and a walkthrough.