Connect apps
Activate in Workspace settings opens a popup so the workspace owner authorizes their own account.
How Activate works
Workspace settings → Connect lists the apps Companion can use. Linear, Stripe, and GitHub are live. Activate opens a popup on Humaner. The owner signs in to that provider there. Humaner never stores the provider secret — Companion asks Vercel Connect for a short-lived token when it needs one.
Owner only
https://app.humaner.io/dashboard/inbox/settings?tab=connect Only the workspace owner can activate or disconnect an app.
Using Vercel Connect
Create four connectors on the Humaner Vercel team, name each Humaner, and attach them to the dashboard project. Linear and GitHub use the managed app connector (`linear/app-humaner`, `github/app-humaner`) — tokens are `subject: { type: "app" }`. Stripe and Notion use a user-subject grant per organization (`org:<id>`). Deployed environments authenticate with Vercel OIDC automatically. Connector ids live in project env: `VERCEL_CONNECT_*_UID`.
Public provider apps
Use Vercel’s managed Linear / GitHub / Stripe / Notion connectors — not a Linear OAuth app you created in your own Linear workspace. Linear OAuth apps default to private, so other Linear workspaces cannot see the client ID ("Could not find OAuth client… logged into the correct workspace"). If you must use a custom Linear OAuth app, set Distribution to public in Linear → Settings → API → Applications. Emails between Humaner and Linear do not need to match.
Create connectors
vercel connect create linear --name humaner
vercel connect create stripe --name humaner
vercel connect create github --name humaner
vercel connect create notion --name humaner
vercel connect attach linear/humaner --triggers --trigger-path /api/dashboard/connect/linear
vercel connect attach stripe/humaner
vercel connect attach github/humaner --triggers --trigger-path /api/dashboard/connect/github
vercel connect attach notion/humanerConnector ids and webhook URLs live in env only: `VERCEL_CONNECT_LINEAR_UID`, `VERCEL_CONNECT_LINEAR_WEBHOOK`, `VERCEL_CONNECT_GITHUB_UID`, `VERCEL_CONNECT_GITHUB_WEBHOOK`, `VERCEL_CONNECT_STRIPE_UID`, `VERCEL_CONNECT_NOTION_UID`. Do not put `scl_…` values in the catalog.
Linear
| Field | Value |
|---|---|
| Create | `vercel connect create linear --name humaner` |
| UID | `VERCEL_CONNECT_LINEAR_UID` |
| Webhook | `VERCEL_CONNECT_LINEAR_WEBHOOK` |
| App name | Humaner |
| Install | Vercel’s public Linear app, per customer workspace |
| Triggers | Issue, Comment |
| Trigger path | `/api/dashboard/connect/linear` |
| Token subject | App (Linear workspace install) |
| Scopes | Connector defaults — do not pass user OAuth `read`/`write` |
Companion can turn a mailbox thread into a Linear issue in that workspace after the owner activates.
Stripe
| Field | Value |
|---|---|
| Create | `vercel connect create stripe --name humaner` |
| UID | `stripe/humaner` |
| App name | Humaner |
| Server URL | `https://mcp.stripe.com` if the CLI asks |
| Triggers | None — Stripe has no Connect trigger forwarding |
| Token subject | User (workspace) |
| Access | Customers, invoices, subscriptions for the authorized account |
Activate asks the owner to authorize Stripe. Companion then reads billing next to the thread.
GitHub
| Field | Value |
|---|---|
| Create | `vercel connect create github --name humaner` |
| UID | `VERCEL_CONNECT_GITHUB_UID` |
| Webhook | `VERCEL_CONNECT_GITHUB_WEBHOOK` |
| App name | Humaner |
| Namespace | The GitHub org or user that installs the app |
| Triggers (2) | `issues`, `pull_request` |
| Event types | `issues`, `issue_comment`, `pull_request`, `pull_request_review`, `deployment_status` |
| Trigger path | `/api/dashboard/connect/github` |
| Token subject | App (GitHub App install) |
Set these 11 GitHub App permissions on the connector (Advanced):
| Permission | Access |
|---|---|
| Metadata | Read (required) |
| Contents | Read |
| Issues | Read & write |
| Pull requests | Read & write |
| Deployments | Read |
| Actions | Read |
| Checks | Read |
| Commit statuses | Read |
| Members | Read |
| Organization administration | Read |
| Dependabot alerts | Read |
Notion
| Field | Value |
|---|---|
| Create | `vercel connect create notion --name humaner` |
| UID | `VERCEL_CONNECT_NOTION_UID` |
| App name | Humaner |
| Triggers | None |
| Token subject | User (workspace) |
| Access | Search pages in the authorized workspace |
Activate asks the owner to authorize Notion. Companion and MCP can then search pages in that workspace.