BeClaude

aimock

New
592Community RegistryGeneralby CopilotKit

Fixture authoring skill for @copilotkit/aimock — LLM, multimedia (image/TTS/transcription/video), MCP, A2A, AG-UI, vector, embeddings, structured output, sequential responses, streaming physics, record/replay, agent loop patterns, and debugging

Community PluginView Source

Overview

https://github.com/user-attachments/assets/76815122-574a-48e1-b275-edae0a014667

Mock infrastructure for AI application testing — LLM APIs, image generation, image editing, text-to-speech, transcription, audio translation, audio generation, video generation, embeddings, MCP tools, A2A agents, AG-UI event streams, vector databases, search, rerank, and moderation. One package, one port, zero dependencies.

Quick Start

bash
npm install @copilotkit/aimock
typescript
// The class is still named `LLMock` for back-compat after the v1.7.0 package
// rename from `@copilotkit/llmock` to `@copilotkit/aimock`.
import { LLMock } from "@copilotkit/aimock";

const mock = new LLMock({ port: 0 });
mock.onMessage("hello", { content: "Hi there!" });
await mock.start();

// Set env BEFORE importing/constructing the OpenAI (or other provider) client.
// Many SDKs cache the base URL at construction time — if the client is built
// before these are set, it will talk to the real API (surprise bills) instead
// of aimock.
process.env.OPENAI_BASE_URL = `${mock.url}/v1`;
process.env.OPENAI_API_KEY = "mock"; // SDK requires a value, even when base URL is mocked

// ... run your tests ...

await mock.stop();

The aimock Suite

aimock mocks everything your AI app talks to:

ToolWhat it mocksDocs
LLMockOpenAI (Chat/Responses/Realtime GA+Beta), Claude, Gemini (REST/Live/Interactions/Embeddings), Bedrock, Azure, Vertex AI, Ollama (chat/embeddings), Cohere (chat/embed), ElevenLabs TTSProviders
MCPMockMCP tools, resources, prompts with session managementMCP
A2AMockAgent-to-agent protocol with SSE streamingA2A
AGUIMockAG-UI agent-to-UI event streams for frontend testingAG-UI
VectorMockPinecone, Qdrant, ChromaDB compatible endpointsVector
ServicesTavily search, Cohere rerank, OpenAI moderation, ElevenLabs TTSServices

Run them all on one port with npx @copilotkit/aimock --config aimock.json, or use the programmatic API to compose exactly what you need.

Features

  • [Record & Replay](https://aimock.copilotkit.dev/record-replay) — Proxy real APIs, save as fixtures, replay deterministically forever
  • Timing-aware recording and replay — Recorded fixtures capture per-frame arrival timestamps; replay uses recorded timings for approximate timing reproduction based on recorded TTFT and inter-frame cadence (replay chunk count may differ from recording — TTFT and average pace are preserved, not per-token fidelity) with configurable --replay-speed multiplier
  • [Multi-turn Conversations](https://aimock.copilotkit.dev/multi-turn) — Record and replay multi-turn traces with tool rounds; match distinct turns via turnIndex, hasToolResult, toolCallId, sequenceIndex, systemMessage (gate on host-supplied agent context), or custom predicates
  • [14 LLM Providers](https://aimock.copilotkit.dev/docs) — OpenAI Chat, OpenAI Responses, OpenAI Realtime (GA + Beta shim), Claude, Gemini (REST + embedContent), Gemini Live, Gemini Interactions, Azure, Bedrock, Vertex AI, Ollama (chat + embeddings), Cohere (chat + embed), ElevenLabs TTS — full streaming support
  • Multimedia APIsimage generation (DALL-E, Imagen), image editing (/v1/images/edits), text-to-speech (OpenAI + ElevenLabs), audio transcription, audio translation (/v1/audio/translations), video generation, fal.ai (image / video / audio with queue lifecycle)
  • [MCP](https://aimock.copilotkit.dev/mcp-mock) / [A2A](https://aimock.copilotkit.dev/a2a-mock) / [AG-UI](https://aimock.copilotkit.dev/agui-mock) / [Vector](https://aimock.copilotkit.dev/vector-mock) — Mock every protocol your AI agents use
  • [Chaos Testing](https://aimock.copilotkit.dev/chaos-testing) — 500 errors, malformed JSON, mid-stream disconnects at any probability
  • Per-Request Strict ModeX-AIMock-Strict header overrides the server-level --strict flag per request (true/1 = strict, false/0 = lenient)
  • Context-Based Fixture RoutingX-AIMock-Context header scopes fixtures per integration; fixtures with match.context only match requests carrying that context, fixtures without it remain shared
  • [Drift Detection](https://aimock.copilotkit.dev/drift-detection) — Daily CI validation against real APIs
  • [Streaming Physics](https://aimock.copilotkit.dev/streaming-physics) — Configurable ttft, tps, and jitter
  • [WebSocket APIs](https://aimock.copilotkit.dev/websocket) — OpenAI Realtime (GA protocol with models: gpt-realtime, gpt-realtime-2, gpt-realtime-1.5, gpt-realtime-mini; transcription/translation via gpt-4o-transcribe, gpt-4o-mini-transcribe, whisper-1; image input; commentary phase), Responses WS, Gemini Live
  • [Prometheus Metrics](https://aimock.copilotkit.dev/metrics) — Request counts, latencies, fixture match rates
  • [Docker + Helm](https://aimock.copilotkit.dev/docker) — Container image and Helm chart for CI/CD
  • [Vitest & Jest Plugins](https://aimock.copilotkit.dev/test-plugins) — Zero-config useAimock() with auto lifecycle and env patching
  • [Response Overrides](https://aimock.copilotkit.dev/fixtures) — Control id, model, usage, finishReason in fixture responses
  • [Streaming Usage Chunks](https://aimock.copilotkit.dev/streaming-physics)stream_options.include_usage support emits a final chunk with token counts, matching OpenAI's streaming usage protocol
  • [Rate Limiting Headers](https://aimock.copilotkit.dev/chaos-testing)x-ratelimit-* headers on every response and Retry-After on 429 errors for testing retry/backoff logic
  • Zero dependencies — Everything from Node.js builtins

GitHub Action

yaml
- uses: CopilotKit/aimock@v1
  with:
    fixtures: ./test/fixtures

- run: npm test
  env:
    OPENAI_BASE_URL: http://127.0.0.1:4010/v1

See the GitHub Action docs for all inputs and examples.

CLI

bash
# LLM mocking only
npx -p @copilotkit/aimock llmock -p 4010 -f ./fixtures

# Remote fixtures — load JSON from an HTTPS URL (repeatable)
npx -p @copilotkit/aimock llmock -p 4010 \
  -f https://raw.githubusercontent.com/acme/mocks/main/openai.json \
  -f ./fixtures/local-overrides.json

# Full suite from config
npx @copilotkit/aimock --config aimock.json

# Record mode: proxy to real APIs, save fixtures
npx -p @copilotkit/aimock llmock --record --provider-openai https://api.openai.com

# Record with extended timeout for reasoning models
npx -p @copilotkit/aimock llmock --record --provider-openai https://api.openai.com \
  --body-timeout-ms 180000

# Replay recorded fixtures at 2× speed
npx -p @copilotkit/aimock llmock -p 4010 -f ./fixtures --replay-speed 2

# Convert fixtures from other tools
npx @copilotkit/aimock convert vidaimock ./templates/ ./fixtures/
npx @copilotkit/aimock convert mockllm ./config.yaml ./fixtures/

# Docker
docker run -d -p 4010:4010 -v "$(pwd)/fixtures:/fixtures" ghcr.io/copilotkit/aimock -f /fixtures -h 0.0.0.0

Note on `llmock` vs `aimock` CLIs. The llmock bin is retained as a compat alias for users of the pre-1.7.0 @copilotkit/llmock package. It runs a narrower flag-driven CLI without --config or the convert subcommand. New projects should use aimock (or npx @copilotkit/aimock) for full feature support.

Remote fixture URLs

--fixtures accepts https:// and http:// URLs pointing at JSON fixture files in addition to filesystem paths, and the flag is repeatable so you can layer remote and local sources in argv order. Fetched fixtures are cached on disk at ~/.cache/aimock/fixtures/<sha256-of-url>/ (honors $XDG_CACHE_HOME); when paired with --validate-on-load, a fetch failure with a valid cached copy logs a warning and continues — without a cache, the process exits non-zero. HTTP fetches have a 10s timeout and a 50 MB body cap; redirects are rejected fail-loud, so configure your upstream to serve the final URL directly (GitHub raw content URLs already do).

Private and link-local addresses (loopback, RFC1918, CGNAT, cloud metadata, ULA, multicast) are rejected by default to prevent SSRF. For local development or tests that need to hit 127.0.0.1, opt out with AIMOCK_ALLOW_PRIVATE_URLS=1. Tarball and zip URL support is intentionally deferred.

Framework Guides

Test your AI agents with aimock — no API keys, no network calls: LangChain · CrewAI · PydanticAI · LlamaIndex · Mastra · Google ADK · Microsoft Agent Framework

Switching from other tools?

Step-by-step migration guides: MSW · VidaiMock · mock-llm · piyook/llm-mock · Python mocks · openai-responses · Mokksy

Documentation

[https://aimock.copilotkit.dev](https://aimock.copilotkit.dev) · Example fixtures

Real-World Usage

AG-UI uses aimock for its end-to-end test suite, verifying AI agent behavior across LLM providers with fixture-driven responses.

License

MIT

Install & Usage

1
Create the skills directory
mkdir -p .claude/skills
2
Download the skill file
mkdir -p .claude/skills && curl -o .claude/skills/aimock.md https://raw.githubusercontent.com/CopilotKit/aimock/main/SKILL.md
3
Invoke in Claude Code
/aimock
View source on GitHub
mcpagent

Frequently Asked Questions

What is aimock?

Fixture authoring skill for @copilotkit/aimock — LLM, multimedia (image/TTS/transcription/video), MCP, A2A, AG-UI, vector, embeddings, structured output, sequential responses, streaming physics, record/replay, agent loop patterns, and debugging

How to install aimock?

To install aimock, create the .claude/skills directory in your project, then run the curl command to download the skill file. Once installed, invoke it in Claude Code with /aimock.

What is aimock best for?

aimock is a community categorized under General. It is designed for: mcp, agent. Created by CopilotKit.