How it works
1
Connect the tool
In Settings > Integrations, select Connect beside the tool and paste its key. Runcrate sends one sample call first and saves the connection only if the tool accepts it. Keys are encrypted at rest and never shown again. Owners and managers can connect tools.
2
Pick the environments
On Models > Observability, the Send to line names the connected tools. Select Choose per environment and tick the tools each environment sends to. An environment sends nowhere until you pick one, and a tool gets calls made from the moment it was picked, not the days before.
3
Watch the calls arrive
New calls are sent in batches every minute. The tool’s row in Integrations shows the last batch it took, the last error in plain words and how many calls are still to send. Test sends one more sample call and shows the tool’s answer.
Prompts and answers
A call is sent without its prompt and answer unless both of these are on:- the environment saves prompts and answers (Settings > Environments), and
- the tool’s Send prompts and answers switch (off by default).
When a tool fails
If a tool refuses a batch or does not answer within 15 seconds, Runcrate keeps the batch and tries again after 1, 2, 4, 8 and 16 minutes, then every 30 minutes, for 24 hours. Calls are always sent in order and none is skipped: a tool that is down for an hour gets that hour’s calls once it is back. After 24 hours of failures the tool is Paused. Fix the cause (a new key, a new address) and select Resume: the calls it missed are sent while they are still kept (30 days). A batch can arrive twice (after an answer that came too late). Each call keeps the same ids every time it is sent: its trace and span ids, its PostHog eventuuid, its data[].id on the webhook, so a repeat can be told apart.
What is never sent: which supplier served a call, or what it cost us.


Langfuse
Calls go to Langfuse’s OpenTelemetry endpoint (/api/public/otel/v1/traces, on its v4 data model, so they show at once). Each call is one generation (an embedding for /v1/embeddings) in a trace of its own:
Feedback you send for a call (thumbs or a rating, from the API, MCP, the playground or the dashboard) becomes a
NUMERIC score on its generation, from -1 to 1, named by its label or feedback, with your comment. A changed rating replaces its score.
To connect: pick the region (EU cloud, US cloud or your own host, Langfuse v3.22 or later) and paste a public key (pk-lf-…) and secret key (sk-lf-…) from your project’s Settings > API keys.


Datadog
Choose how each call arrives:
- A log (every Datadog plan):
source:runcrate, your service name,status:errorfor a failed call, tagsenv,model,endpoint,source,session_idand your own, the end user asusr.id, and the call under theruncrateattribute (tokens, cost, timings, status). - An LLM Observability span (where your account has LLM Observability): one
llmspan per call under your ML app name, withmodel_name, input and output tokens, TTFT, cost and status, and the prompt and answer as messages when both switches are on.

OpenTelemetry
Any backend that takes OTLP over HTTP. Each call is one CLIENT span, named like chat meta-llama/Llama-3.3-70B-Instruct, with the GenAI semantic conventions:
To connect: paste the OTLP/HTTP endpoint (Runcrate adds
/v1/traces unless it is there) and the headers your backend wants. Start from one of these:
The address must be public and use https.


PostHog
Each call is a $ai_generation event in PostHog’s LLM analytics: $ai_model, $ai_provider (runcrate), $ai_input_tokens, $ai_output_tokens, $ai_total_cost_usd, $ai_latency and $ai_time_to_first_token in seconds, $ai_http_status, $ai_is_error and $ai_error, $ai_trace_id (the call’s id), $ai_session_id, and $ai_input and $ai_output_choices when both switches are on. Your tags arrive as tag_<key> properties.
The event’s person is your end user. A call without one is sent under runcrate:<API key id> without a person profile, so anonymous traffic does not fill your persons list.
Feedback is a $ai_metric event on the call’s trace (and a $ai_feedback event when it has a comment).
To connect: pick US cloud, EU cloud or your own host and paste the project API key (phc_…) from Project settings. It can only send events, never read them.
Webhook
Your own HTTPS endpoint gets each batch as one JSONPOST, signed like every Runcrate webhook:
prompt, answer and body_truncated. Feedback arrives as its own batch, "type": "inference.feedback", with request_id, call_id (the call’s id), score (-1 to 1), rating, label, comment and source.
Runcrate-Signature is the hex HMAC-SHA256 of t, a full stop and the raw body, keyed with the signing secret Runcrate shows once when you connect the webhook. Verify it with the code in verifying signatures. Answer with a 2xx within 15 seconds; anything else is retried as above.