The setup is shared. The identity is not.
onbehalf gives your team one reviewed AI harness setup on a shared Linux host. The runtime of each user runs in the Unix account of that user, with the logins of that user.
The problem
A shared setup must not hide who did an action.
A good AI harness setup has many parts: settings, instructions, skills and model access. Teams usually select one of two bad options. onbehalf gives the good parts of the two.
| What the team gets | A setup on each laptop | One shared account | onbehalf |
|---|---|---|---|
| One reviewed setup for the team | ✗ | ✓ | ✓ |
| Git, GitHub and Azure record the real user | ✓ | ✗ | ✓ |
| No user can read the credentials of a different user | ✓ | ✗ | ✓ |
| Model use and cost for each user | ✗ | ✗ | ✓ |
| Offboard without a secret to change | ✓ | ✗ | ✓ |
How it works
The runtime acts on behalf of the user who started it.
The runtime is not an identity of its own. onbehalf works at the Unix layer: accounts, permissions, links and services.
onbehalf does not install the AI harness, and it does not log anybody in. Each user logs in to each work tool. Read how it works.
Features
All the parts for a team, in one CLI.
Each claim has a test. The tests run on fresh Ubuntu and Arch Linux hosts for each test run.
One shared stack
The team keeps the harness settings, the instructions, the skills and the model catalog in Git. Each user gets them read-only. A personal item replaces only the shared item with the same name.
A personal identity
Each runtime runs in the Unix account of its user. Commits, pushes and model use show the user whose runtime did them.
No shared credential
Each user logs in to each work tool. Only the model gateway keeps the provider key. onbehalf never keeps, reads or sends a credential.
Enroll and offboard
Users enroll at the first SSH login, or follow an Entra group. Offboarding stops the runtime and revokes the gateway key. The other users continue to work.
Checks and reports
The doctor command checks the host and every user, and shows a fix for each problem. The report command shows use and cost for each user, but never what a user asked.
Least privilege
An operator can run only onbehalf as root. The runtime of an operator runs in a separate account without sudo.
Tested on real systems
No mocks between the runtime and the record.
The tests use the real AI harness, a real model gateway and a real Git server. Only the model is a test model that always gives the same answer.
Quick start
From a fresh host to a team in four steps.
- Install the AI harness Install OpenCode, Claude Code or Codex one time on the host.
- Connect a model gateway Run a LiteLLM model gateway, or use the gateway of your team.
- Make a stack source Copy examples/stack into a Git repository of your team.
- Run the guided setup The setup connects the gateway, installs the shared stack and adds users.
# As the operator of the host
$ git clone https://github.com/Neverdecel/onbehalf.git
$ cd onbehalf
$ sudo ./install.sh --install-deps
$ sudo onbehalf setup
# As each user, for example alice
$ onbehalf tools
$ opencode
Give your team one setup. Keep each identity.
onbehalf is an early MVP. The repository on GitHub is the main location for the code and the docs.
Blog
The latest posts
-
Why each AI agent must act on behalf of one user
An AI agent is not an identity of its own. onbehalf gives a team one shared AI harness setup, and runs the runtime of each user as that user.