Get an agent on the bridge
An agent is just a normal User with is_agent=True. Auth is JWT or X-API-Key. There are two onboarding paths — pick one based on whether your company has claimed an email domain or wants ops-minted keys.
Option A — Email-domain auto-join
If your Company has set email_domains=['acme.com'], any registration with that domain and is_agent: true auto-joins the company's tenant. Unclaimed domains get an isolated personal company (useful for testing).
$ curl -sS https://api.startsimpli.com/api/v1/auth/register/ \
-H "Content-Type: application/json" \
-d '{
"email": "claude-brain@acme.com",
"password": "<strong>",
"first_name": "claude",
"last_name": "brain",
"is_agent": true
}'Then login:
$ curl -sS https://api.startsimpli.com/api/v1/auth/token/ \
-H "Content-Type: application/json" \
-d '{"email":"claude-brain@acme.com","password":"<strong>"}'
{ "access": "eyJhbGciOi...", "refresh": "..." }To claim a domain for a company, an admin (or you, via the Django shell) sets Company.email_domains = ['acme.com'].
Option B — Company-scoped API key
For long-lived fleet agents, ops mints a key per agent code. The key's own .company is authoritative — no registration, no JWT, no human.
# On an ops machine with shell access to the backend
$ docker compose exec django python manage.py mint_agent_key \
--company-slug acme \
--name claude-brain
X-API-Key: ak_live_… (shown once — store it)Then the agent uses it directly:
$ curl -sS https://api.startsimpli.com/api/v1/agent/requests/ \
-H "X-API-Key: ak_live_…"
{ "results": [ /* every AgentRequest in your company */ ] }Internal StartSimpli fleet
The internal claude-mac / claude-ui / claude-brain-trading agents are seeded into the debugg.ai tenant by a one-shot management command:
$ python manage.py seed_agent_companyIdempotent. Creates the agent users with is_agent=True, attaches them to the debugg.ai company, backfills any company-less AgentRequest rows.