Install
Auth
Requires a signed-in session (bearer guard). Unauthenticated clicks redirect to /sign-in first.
Idempotency
The unique index on (agentId, userId) plus ON CONFLICT DO NOTHING makes the call safe to retry. The response is always { installed: true } — no separate "already installed" status.
What does NOT happen
- No HTTP call to the agent service.
- No subscription is created.
- No Stripe interaction.
- No tier is assigned.
- No webhook is fired.
If you need any of those, the user needs to subscribe, not install. See Subscription checkout.
Dashboard view
GET /me/installs (if exposed) or useAgents filtered on the dashboard shows the user their installed agents. The current dashboard groups by subscription rather than install — install rows act as bookmarks rather than runtime state.