Carrier
The 3D town could not load here.
Into the institute… opening the login
Experimentation platform Internal testing

People, LLM agents and scripted bots, together in any setting you can simulate.

Put all three in the same study, whether they meet in a group chat, a social media feed, a coding environment or a shopping page. Carrier records every message, click and reply, whoever or whatever made it.

HHuman AILLM agent BScripted bot
Scroll for more
AI assistant
Preview

Describe your study. Your AI assistant builds the draft.

Connect claude.ai, Claude Code, Codex CLI or ChatGPT in one line.

Read the setup tutorial →
Connect in one line
$claude mcp add --transport http carrier https://carrierlab.org/mcp
# Then type /mcp and select Authenticate.
  1. 1Add Carrier to your assistant
  2. 2Sign in and select Allow
  3. 3Describe the study
Settings and LLMs

Humans and LLMs, in the setting that you study

A human, an LLM agent or a scripted bot can hold each position. You set up each one in plain language.

Group chat

Dyads to large groups. Agents converse or moderate.

Live demo →

Social media feed

Agent accounts post and reply in a feed that you write.

Watch it →

Coding environment

Participants give tasks to an AI agent in an editor.

Live demo →

Shopping page

Agents advise participants. Carrier records each choice.

Live demo →

Use the latest LLMs in each part, without code

Models

Catalogues of OpenAI, Anthropic and Google, refreshed each day.

Credentials

Use your API key, or start on platform credit.

Behaviour

An LLM takes a seat, or processes what participants write.

Security

Checks find LLM agents that pose as participants.

Platform overview

Components of a Carrier experiment

Seven capabilities, from the interaction settings participants enter to the checks that verify the data they produce.

01
Mixed Human–AI Interaction

Any composition of humans and agents

As social interaction moves online, it increasingly combines people and AI. Carrier supports every configuration within a single room — human-to-human, agent-to-agent, human-to-agent, and human conversation supported by AI assistants — with each agent's identity either disclosed or blinded.

Human ↔ Human Agent ↔ Agent Human ↔ Agent AI-Assisted
Interaction Configurations
H ↔ H
Human ↔ Human
AI ↔ B
Agent ↔ Agent
H ↔ AI
Human ↔ Agent
H ↔ H +
Human ↔ Human · AI-assisted
Any participant, any role · agent identities disclosed or blinded
02
Participant Role System

Three participant roles

Any participant — human, LLM, or scripted bot — takes one of three roles, each in its own zone of the room. Communicators converse in the main chat. Mediators facilitate from above: they see everything, broadcast announcements, and can enable or disable who speaks. Processors work in the composition layer — suggesting or drafting text before a message is sent, while the communicator always decides what actually goes out.

Communicator → converse Mediator → facilitate Processor → assist
Chat Segment — Three Zones
Mediator · broadcasts · sees all · controls input
"2 minutes left — try to reach consensus."
Communicator · converses in the chat
Alex Human — "I'd prioritise transparency."
Claude LLM — "Fair — though cost matters too."
Processor · assists before you send
Draft: "I disagree with that…"
Suggestion: add a concrete example Use Dismiss
You decide what actually gets sent.
Experiment builder — filling a chamber's role slots
Roles are assigned by dropping participants into slots. A human participant goes into the communicator row and a mediator agent into the mediator row — the same three zones, seen from the builder side.
03
The Variable System

Variables defined once, referenced throughout

Any attribute of a participant can be represented as a variable — a survey answer, a random or counterbalanced condition, or a value computed from other variables — fixed per participant at the start of their run. Variables are referenced anywhere with {{ }}: to personalise instructions, populate LLM system prompts, determine which participants are matched together, and show or hide content by condition. Conditions are defined once and read by the whole study. A variable may also be computed by an LLM: the live chat, survey answers, or other variables are sent to a model with a specified prompt, and the resulting annotation returns as a variable available to the remaining segments.

Survey-Derived Random & Counterbalanced Computed Expressions LLM-Processed Prompts · Matching · Visibility
Variables Manager
condition counterbalance High / Low anonymity
age survey from pre-survey · Q3
persona expression based on {{condition}}
stance llm-processed LLM-annotated from chat
Computed by LLM annotation
chat: "…we should tax carbon…" → claude-haiku · "Classify this participant's stance" → {{stance}} = "pro-policy" · 0.86
Updates live as sources change — on activity, on a timer, or gated by a process segment.
Referenced everywhere
InstructionWelcome — you're in the {{condition}} group.
LLM promptAdopt a {{persona}} tone.
VisibilityShow debrief if {{age}} ≥ 18
MatchingGroup by {{condition}}
04
Segment System

Timed sessions composed from segments

A session is a sequence of segments — and every step of it is tracked. Thirteen segment types cover the full arc of a study: live chat with other participants or LLM agents, voting, ranking, free-text input, surveys, PDF reading, media, timers, slides, instructions, attention checks, and a mock social feed — each with its own timing and transition rule (auto, manual, synced, or host-led). As participants move through, every segment records what happened inside it — what was said in the chat, what was chosen in the vote, how long the reading took — so a run reads back as a step-by-step process, not just an outcome. The task segment is fully programmable: a custom HTML/JS application or a standard jsPsych experiment can be embedded directly, and its state binds live to the variable system, so participant behaviour inside the application can drive agents, matching, and subsequent segments.

13 Activity Types Timed Transitions Sync Modes Agent Overrides Custom HTML Tasks Per-Segment Data Trail
Session Timeline
Every participant · same order
Ix
Instruction 1m auto
Su
Survey 3m manual
Ch
Chat agent override 10m sync
Rk
Ranking 2m auto
Tk
Task custom app 5m manual
13 types — chat · selection · ranking · survey · input · media · pdf · timer · task · slide · instruction · attention-check · social
Recorded in a real session Three segment types, as participants see them
PDF segment
Reading beside a live chat. The participant works through a paper on the left and questions an AI advisor on the right.
Selection segment
A vote inside the session. Six matched participants choose a contribution while the mediator announces the round.
Task segment
jsPsych, running unmodified. Accuracy and mean reaction time come back as Carrier variables.
05
Social Feed Segment

A fully specified social media environment

Social media can be studied without collecting anyone's real feed. The social segment renders a mock Instagram-, Facebook- or Reddit-style feed authored post by post — images, captions, handles, like counts, vote scores, timestamps, and seeded comment threads — imported as a spreadsheet, so that an identical feed reaches every participant in a condition. The forum layout adds title-led text and link posts, communities and flair, and comment threads that nest as deep as the discussion goes. The accounts behind those posts may be agents: when a participant comments, the account replies in persona after a configurable delay, using either an LLM persona or scripted rules. Posts can be scheduled to appear partway through the session and replies to arrive minutes later, so the feed continues to develop while participants read it. Because segments can be shown or skipped by variable, each condition receives its own feed from the same study. Likes, votes, comments, thread expansions, shares, and every agent reply are timestamped against the segment clock and land in the export.

Instagram, Facebook & Reddit Layouts CSV-Authored Feeds Agent-Backed Accounts Delayed & Scheduled Posts Per-Condition Feeds Full Interaction Log
Social segment
The account answers back. A participant asks a question under a post, and the agent bound to that account replies in character.
06
Agentic Experiment Builder

Study configuration through dialogue

A study described in plain language is read by an AI agent, which examines the current experiment and proposes concrete changes — adding chamberlines and chambers, configuring roles, setting variables and triggers. It operates across OpenAI, Anthropic, and Google, and is human-in-the-loop by design: the agent proposes every change for review, and each is accepted or rejected by the researcher, who retains control of the experiment throughout.

Natural-Language Design Proposes, You Approve Multi-Provider
Design Assistant
You
Researcher
Add a second condition with a mediator that summarises the discussion every 5 messages.
Proposed changes
+ Chamberline “Mediated” · + Mediator role (aggregate, every 5 msgs)
Accept Reject
07
Participant Integrity

Verifying that participants are human

LLM agents can now complete surveys, pass classic CAPTCHAs, and hold fluent conversations — silently corrupting behavioral datasets collected through online participant pools. Carrier verifies humanity at the point of collection: perceptual CAPTCHAs whose answers exist only in human motion perception — and only on the server, never in any client payload — plus camera-based liveness checks with randomized action challenges. Every check result is recorded on the run and interleaved into the transcript, so that each exported row can be traced to a verified, attentive human participant.

Data Quality Agent-Resistant Server-Authoritative Camera Liveness
Attention Check — Spooky-Circle CAPTCHA
How many circles can you see?
Live demo — try it. The real check is server-verified with single-use challenges.
Live demos

Worked examples from live experiments, open without an account.

Each example opens with a testing guide, including how to run the required number of browser sessions on a single machine.

Additional platform components

Further components of the builder and the monitoring dashboard.

Experiment builder

Visual drag-and-drop experiment design, requiring no programming.

▼
Visual 3-pane builder. Drag segments and participants from a library onto a timeline canvas, configure properties in the inspector panel. Preview and validate experiments before deploying.
Drag & Drop 3-Pane Layout Visual Timeline
DELIBERATION STUDYValidatePreviewDeploy
Library
Segments
💬 Chat
☑️ Select
📊 Rank
📋 Survey
Chamber Line A
Intro
2 seg
Discussion
3 seg
Debrief
1 seg
Discussion — Segments
Chat · 10m
Select · 3m
Survey · 5m
Inspector
Chamber Name
Discussion
Participants
👤 2 Humans
🤖 1 Bot

Participant matching

Automatic grouping by condition, survey response, or queue order.

▼
Match participants into chatrooms automatically using three strategies. Survey-based assignment groups people by their pre-survey answers. Counterbalancing ensures even distribution across conditions. FIFO matches in queue order for speed.
Survey-Based Counterbalance FIFO
Matching Queue
P1
Alex Condition A matched
P2
Jordan Condition A matched
P3
Sam Condition B waiting

Multi-provider models

OpenAI, Anthropic, and Google models within a single study.

▼
Run the same experiment with different LLM providers to compare responses. Configure temperature, context window, system prompts, and response logic per agent. Supports GPT-4o, Claude, Gemini, and custom endpoints.
OpenAI Anthropic Google Custom API
Agent Configuration
Agent A
GPT-4o
temp: 0.7
Agent B
Claude 3.5
temp: 0.7
Agent C
Gemini Pro
temp: 0.7
Same prompt · Same context · Compare outputs

Monitoring dashboard

Real-time session tracking, alerts, and data export.

▼
Watch every active session in real time. Get alerts for disconnects, long waits, and drop-outs. Pause, resume, or end individual participant sessions. Export all data as CSV, XLSX, or JSON.
Real-time Alerts Session Control Export
Dashboard
12
Active
3
Waiting
47
Completed
⚠ P-0847 disconnected 45s ago — Chamber 2

Agent scripting

Seventeen trigger types for scripted agent behaviour, requiring no programming.

▼
Build sophisticated bot behavior with trigger-response rules. Keywords, regex, timed events, message counts, cross-bot chains, activity timeouts, and more. Triggers can fire conditionally, chain to other triggers, and have cooldowns and probability controls.
Keyword & Regex Timed Triggers Chain Reactions No Code
Bot Configuration
keyword "hello" → "Welcome to the study!"
time 30s → "Any initial thoughts?"
msg-count = 10 → "Let's summarize"

Template library

Any experiment can be saved as a reusable, forkable template.

▼
Save any experiment as a reusable template and one-click fork it into a fresh study — all IDs regenerated. Browse by experiment type, participant count, and chamber structure.
Quick-Start Fork & Customize ID-Safe Cloning
Template Library
Group Deliberation 3 chambers · 2H + 1AI Fork
Dyad Conversation 2 chambers · 2H Fork
Human-AI Collab 3 chambers · 1H + 2AI Fork
↑ Click any card above to expand its details and mock UI
Responsible Agentic AI

Accountability at each stage of an experiment

Agents may contribute to study design, take part in sessions, and moderate interaction. At each stage the researcher retains control: agent proposals require explicit approval, actions are recorded, and a run can be reproduced from its stored configuration.

  1. 01

    Design

    Builder & assistant

    Sessions are constructed visually or through dialogue with an assistant, which reads the current configuration and proposes discrete changes for approval.

    Human-in-the-loop
  2. 02

    Run

    Live monitoring

    Human participants, LLM agents and scripted bots interact as specified, with participant limits, alerts and live monitoring of each session.

    Safety & data controls
  3. 03

    Verify & export

    Integrity & data

    Attention and liveness checks, together with a per-segment event log, allow each exported record to be traced to a verified participant.

    Reproducible record