Skip to content

The Kindo connection

Sift reaches your Kindo tenant with one API key, and makes its own model calls with one model you choose. Both live under the gear icon (Administration) › Kindo connection, which only an admin can open. This page is the reference for that screen: the connection card, each check, rotating the key, changing the model, and what Sift calls on Kindo. For a first connection walked through step by step, see Connect Kindo.

Sift has no connectors of its own. Every source a filter reads, every agent it sends to and every model call it makes goes through this key, so whoever is an admin on Sift has that reach into Kindo too. Treat the admin role and this key accordingly.

You paste the key once. Sift encrypts it before storing it, and no endpoint returns it, including to the console: afterwards the screen shows only its last four characters (Key …abcd). The encryption key is derived from SIFT_SECRET_KEY, so changing that setting makes the stored Kindo key unreadable and you paste it again. See Security and data handling.

With no connection, the screen shows the Connect to Kindo wizard. Its steps are Key, Connect, Model and Checks; a replacement adds Confirm.

StepWhat you doWhat Sift does
KeyEnter a Label (how the connection is named in the console and the audit log, up to 100 characters), the API key (8 to 500 characters) and the Base URL (https://api.kindo.ai unless your Kindo has its own; must be an http or https URL). Select Connect.Nothing yet.
ConnectWait about a second.Tries the key with the header form set in SIFT_KINDO_AUTH_HEADER (default Authorization, sent as Authorization: Bearer), then the other form Sift knows (api-key), and reads the key’s model catalog. If Kindo refuses the key, nothing is stored and Kindo’s reason is shown with the key still in the field. If it works, the key is staged beside any live one.
ModelChoose a model from the key’s own catalog and select Confirm model. Or Use a different key.Starts the checks.
ChecksWait, or leave the page.Runs the checks below in the background. A first connection goes live by itself as soon as they pass, even if you closed the tab.
Confirm (replacement only)Read what changes and select Replace connection.Swaps the staged key in. See Replace the key.

Cancel at any step deletes the staged key and its checks, and leaves any live connection exactly as it was.

A staged key is kept for one hour. After that it is deleted, and the wizard says “The key you staged expired.” Connect again to carry on.

Each check is a short list of tasks, each Waiting, Running, Passed, Warning or Failed. The tenant task runs first; if it fails, the others are not run (Not run), because they would only be the same refused key failing again.

TaskWhat it checksRuns on
TenantThe key authenticates (the header form is probed and recorded), and one page of your agents can be read with it. Records the Verified time, or the error.Connect, replace, Verify
ModelThe model answers a JSON instruction in a form Sift can read, and makes a tool call. Each call waits up to 30 seconds. A model that fails cannot be chosen for this key: on a staged key for as long as the key is staged, on the live key for one hour.Connect, replace, Change model, Verify
Paired agentsEvery agent a filter sends to can be read with this key. An agent that is missing (Kindo has no agent with this id for this key.) or forbidden (This key is not allowed to read this agent.) is a Warning, not a failure: a new key may be for a different tenant on purpose.Replace, Verify

Only one check runs per key at a time. A check that has not finished 10 minutes after it started is marked failed: “Did not finish: the worker running this check stopped, or none picked it up in 10 minutes. Run it again.”

The model catalog lists what the key may ask for, not what works, which is why the chosen model is tested. The picker groups models into Suggested (the families Sift has been tested with) and Other models, always shows each model’s id beside its name, and marks a model that failed its test with the reason, disabled.

Once a key is live, the screen shows a card in place of the wizard.

FieldMeaning
Label and badgeVerified, Verification failed, or Not verified (never probed).
ModelThe model Sift’s own calls use. None chosen means Sift is using SIFT_COPILOT_MODEL (default claude-sonnet-5) until you choose one.
Base URLWhere Sift calls Kindo.
Auth headerThe header form that authenticated.
KeyThe last four characters.
Created, VerifiedWhen the key was stored, and when it last passed the tenant task (Never if not).

If the last verification failed, the card shows Last verification failed with Kindo’s reason. Below the card, four buttons:

ButtonWhat it does
VerifyRuns Tenant, Model (on the stored model) and Paired agents on the live key. With no model chosen, the Model task tests nothing and shows a Warning. Use it after Kindo-side changes, or when the dashboard says Kindo is failing. If the stored model is no longer in the key’s catalog, the Model task fails with “{model} is no longer offered to this key”.
Change modelOpens the model picker on the live key’s catalog. Confirm model tests the model, and Sift switches to it only if it passes; if it fails, nothing changes.
Replace keyRotates the key. See below.
DisconnectRemoves the key after a confirmation. Sift then has no Kindo connection: sources are not read and escalations do not reach agents until a key is added again. Cannot be undone; the key would have to be pasted again.

Sift’s model, the one you choose here, runs Sift’s own calls: Sift’s assistant that drafts a filter, the analyzer’s classification of an agent’s past runs, and gold set builds. It is not the model your agents use; each Kindo agent keeps its own. It is also not the decision model, which is separate and not part of Kindo.

Use Replace key to rotate, never Disconnect followed by a new connection: a replacement leaves no gap.

  1. Select Replace key.
  2. Enter the new key’s label, key and base URL, and select Connect.
  3. Choose the model and select Confirm model.
  4. Wait for the checks, which include Paired agents.
  5. On Confirm the replacement, read the old and new key and model side by side, and the label and base URL if they changed.
  6. Select Replace connection.

The old key stays the connection until step 6. If the checks found filters whose agents the new key cannot read, step 5 lists them under “These filters would stop reaching their agents with the new key:”. Cancel and check the key, or, if the new tenant is intended, pair those filters with agents the new key can reach.

The confirmation is accepted only while the passing check is less than an hour old (“Its passing check is more than an hour old; run the checks again.”). Replacing removes the old key from Sift; it still works in Kindo until you revoke it there.

Below the card, Recent calls counts the calls Sift has made to Kindo over the last 24 hours: Calls, Failed, Rejected (Kindo answered and refused, for example an agent id that is not an agent; shown apart because it is not an outage), and Waiting on rate limits. It makes no call of its own. It is the same reading as the Kindo light on the dashboard.

Under What Sift can reach, Check reachability reads your agents (the first 25) and the key’s models back through the stored key, so you can see the key reaches the tenant you expect. An empty list from a successful call means the tenant has none, not a failure.

These appear above every page for everyone, with a Go to Kindo connection link for admins.

CodeSeverityMessageFix
no_kindo_credentialwarningNo Kindo API credential is configured, so nothing can reach the platform.Connect a key.
kindo_credential_unverifiedwarningThe stored Kindo credential has not been verified against the API. The correct auth header form is only known once a probe succeeds.Run Verify.
kindo_model_unselectedwarningNo model is selected for this connection; Sift is using {model} from SIFT_COPILOT_MODEL.Choose one with Change model.
kindo_model_unavailablecritical{model} is no longer offered to this Kindo key, and every call Sift makes names it.Choose another model with Change model.

When escalations stop reaching agents (escalations_undelivered, escalations_failing), the console also points here; see Troubleshooting.

These are environment settings, not console fields. See the configuration reference.

SettingDefaultMeaning
SIFT_KINDO_MAX_REQUESTS_PER_SECOND5.0Requests per second to Kindo, for the whole deployment. Retries count against it too.
SIFT_KINDO_REQUEST_TIMEOUT_S30.0Timeout for ordinary calls (agents, runs, tool calls).
SIFT_KINDO_INFERENCE_TIMEOUT_S180.0Timeout for model calls, which take longer.
SIFT_COPILOT_MODELclaude-sonnet-5Model used while none is chosen on this screen.

Sift retries a failed call a few times before it counts it as failed.

Kindo endpointWhy Sift calls it
GET /v1/modelsThe key’s model catalog: the model picker, the connect probe.
GET /v1/agents/listThe tenant check, reachability, choosing an agent to analyze or pair.
GET /v1/agents/{id}Reading an agent’s definition and recent runs: pairing, the paired-agents task, agent analysis.
POST /v1/agents/createCreating the paired agent for a filter, when you ask Sift to.
POST /v1/agents/runsEscalating an event: starting the agent’s run.
GET /v1/runs/{id}Reading a run’s outcome and the agent’s verdict.
GET /v1/runs/{id}/evals, GET /v1/conversations/{id}/itemsReading an existing agent’s past runs when you start from an existing agent.
POST /v1/mcpCalling an integration’s tool: reading a filter’s source, and the samples Sift’s assistant takes.
GET /v1/integrations/connectionsListing your integrations when you create a filter.
POST /v1/chat/completionsSift’s own model calls: Sift’s assistant, agent analysis, gold set builds, the model test.