docs
Getting Started

Quickstart

From sign-in to a first Slack answer, a first MCP call and a first API call, in order.

nima runs one pipeline: Signal → Beacon → Spec → PR → Closed. This page takes a new workspace from sign-in to a first answer in Slack, a first MCP call and a first API call. The web app at app.getnima.io is an admin panel (sign-in, onboarding, Integrations, Settings); you do the pipeline work in Slack, over MCP and over the REST API.

On for every workspace. Connecting integrations and creating a webhook sender need an owner or admin. Creating an API key, filing a signal and asking in Slack work for every member.

Quickstart steps from sign-in to first answer

Sign in with Google

Open app.getnima.io and choose Continue with Google. Google is the only sign-in method: there is no password, SSO or domain allowlist, so any Google account can sign up.

Finish the three-step onboarding

The wizard has three steps:

  1. Name your workspace. The name needs at least 2 characters.
  2. Add to Slack. You can skip it and connect Slack later from Integrations.
  3. Connect tools. You can skip it too. The tiles are GitHub, Linear, Jira, HubSpot, Notion, Granola, ClickUp, Sentry and PostHog, plus a Bring your agent card with a prompt that points an agent at nima's MCP server.

Finishing lands you on Integrations, the home screen of the app. Only owners and admins can connect integrations. A member who signs in lands on Settings instead of Integrations and cannot connect tools. Roles are covered in Members, roles and workspaces. See the admin panel for every screen.

Connect Slack and bring @nima into a channel

From Integrations, connect Slack. Then invite @nima to each channel nima should read (/invite @nima in Slack). The channel then shows up in the Slack channel list on Integrations automatically. Messages posted after the bot joins become signals: nima classifies, extracts and de-duplicates them. Removing the bot from a channel is what stops reading. Setup details and permissions are on Slack.

Connect GitHub

Connect GitHub from Integrations so nima indexes your repositories and links pull requests to specs. See GitHub for what it reads and what it needs.

Ask @nima a question in Slack

Mention @nima in a thread with a question, for example @nima what have customers said about export timeouts?. nima answers in the thread. It only answers people it can match to a member of the workspace: your Slack profile email must match your nima account's email, otherwise nima replies that it could not match you and asks you to sign in with that email or ask an admin for an invite. More on the Slack assistant is in Use nima in Slack.

Create a personal API key

In the app, open Settings, then API keys, then create a key. Give the key a name (for example my laptop). knowledge:read and signals:read are ticked for you; open More scopes to add others a script needs, such as signals:write. Pick an expiry of 30, 90 or 365 days. The key starts with nima_ and is shown once, so copy it now.

The key is pinned to the workspace that was open when you created it: every call with it reads and writes that workspace.

Verify the key with the one call that can only fail for a credential reason:

export NIMA_API_KEY="nima_..."

curl -s https://api.getnima.io/oauth/userinfo \
  -H "Authorization: Bearer $NIMA_API_KEY"
{
  "sub": "3f8a2c14-...",
  "email": "you@example.com",
  "isOnboarded": true,
  "organizationId": "b71e5c08-...",
  "orgRole": "owner"
}

organizationId is the workspace the key is pinned to. Key lifecycle, IP allowlists and rotation are in Authentication.

Connect a coding agent and make a first MCP call

Connect a coding agent has the install commands for Claude Code, Codex, Claude.ai and Claude Desktop, and the skill that teaches an agent when to ask nima. Once connected, run a smoke test:

ask_knowledge_graph  q="what is this product"

If nima's tools are missing from the agent's list, the connection did not finish: reconnect and sign in again. If the call returns an insufficient_scope error, reconnect and grant knowledge:read on the consent screen.

File or send your first signal

Slack channels and connected tools such as Linear, Sentry or PostHog send signals on their own. You can also send signals yourself, in two ways. Over MCP or the API, file one with create_signal or POST /v1/signals. The body takes content (required, up to 10,000 characters) and optionally sourceLabel (up to 100 characters, defaults to manual), stakeholders and productAreas (up to 10 entries each). There is no title or classification field; nima classifies the signal itself.

curl -X POST https://api.getnima.io/v1/signals \
  -H "Authorization: Bearer $NIMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Export of 40k rows returns a 504 after about 30 seconds.",
    "sourceLabel": "customer call",
    "stakeholders": ["Northwind"],
    "productAreas": ["exports"]
  }'

The key needs signals:write. The second way is a webhook: an owner or admin creates a sender with POST /v1/signal-webhooks from a signed-in session (there is no control for it in the app), and anything that can POST JSON can then file signals. See Webhooks.

What happens after signals arrive

nima groups related signals into a beacon automatically, so you do not group them yourself. List the beacons that are ready to decide on:

curl "https://api.getnima.io/v1/beacons?status=ready" \
  -H "Authorization: Bearer $NIMA_API_KEY"

Promoting a beacon to a spec is POST /v1/beacons/:id/promote, a route that takes a signed-in session only: API keys and MCP tokens are refused, and there is no MCP tool or Slack action for it. The route is declared under the copilot_chat plan feature, so a workspace whose plan lacks it can get 403 INSUFFICIENT_PERMISSIONS with details.feature set to copilot_chat. Once the spec is promoted to a ticket, nima tracks the pull requests linked to it and, when the work merges, marks the spec shipped and tells the people who reported the signals. The full path is in The loop: Signal to Closed.

Next steps after the quickstart

On this page