Files
wehub-resource-sync 426e9eeabd
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Waiting to run
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Waiting to run
Build Agent Image / build-and-push (push) Waiting to run
Chat shell gestures / Chat shell gesture + parity e2e (push) Waiting to run
ci / test (push) Waiting to run
ci / lint-and-format (push) Waiting to run
ci / build (push) Waiting to run
ci / dev-startup (push) Waiting to run
Cloud Gateway Discord / Test (push) Waiting to run
Cloud Gateway Webhook / Test (push) Waiting to run
Cloud Tests / lint-and-types (push) Waiting to run
Cloud Tests / unit-tests (push) Waiting to run
Cloud Tests / integration-tests (push) Waiting to run
Cloud Tests / e2e-tests (push) Blocked by required conditions
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Deploy Apps Worker (Product 2) / Determine environment (push) Waiting to run
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Blocked by required conditions
Deploy Eliza Provisioning Worker / Determine environment (push) Waiting to run
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Blocked by required conditions
Dev Smoke / Classify changed paths (push) Waiting to run
Dev Smoke / bun run dev onboarding chat (push) Blocked by required conditions
Dev Smoke / Vite HMR dependency-level smoke (push) Blocked by required conditions
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Waiting to run
gitleaks / gitleaks (push) Waiting to run
Markdown Links / Relative Markdown Links (push) Waiting to run
Publish @elizaos/example-code / check_npm (push) Waiting to run
Publish @elizaos/example-code / publish_npm (push) Blocked by required conditions
Publish @elizaos/plugin-elizacloud / verify_version (push) Waiting to run
Publish @elizaos/plugin-elizacloud / publish_npm (push) Blocked by required conditions
Quality (Extended) / Homepage Build (PR smoke) (push) Waiting to run
Quality (Extended) / Comment-only diff guard (push) Waiting to run
Quality (Extended) / Format + Type Safety Ratchet (push) Waiting to run
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Waiting to run
Quality (Extended) / Develop Gate (lint) (push) Waiting to run
Sandbox Live Smoke / Sandbox live smoke (push) Waiting to run
Snap Build & Test / Build Snap (amd64) (push) Waiting to run
Snap Build & Test / Build Snap (arm64) (push) Waiting to run
supply-chain / sbom (push) Waiting to run
supply-chain / vulnerability-scan (push) Waiting to run
Build, Push & Deploy to Phala Cloud / build-and-push (push) Waiting to run
Test Packaging / Validate Packaging Configs (push) Waiting to run
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Waiting to run
Test Packaging / Pack & Test JS Tarballs (push) Waiting to run
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Waiting to run
UI Fixture E2E / ui-fixture-e2e (push) Waiting to run
UI Fixture E2E / fixture-e2e (push) Waiting to run
UI Story Gate / story-gate (push) Waiting to run
vault-ci / test (macos-latest) (push) Waiting to run
vault-ci / test (ubuntu-latest) (push) Waiting to run
vault-ci / test (windows-latest) (push) Waiting to run
vault-ci / app-core wiring tests (push) Waiting to run
verify-patches / verify patches/CHECKSUMS.sha256 (push) Waiting to run
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Waiting to run
Voice Benchmark Smoke / voice bench smoke summary (push) Blocked by required conditions
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Waiting to run
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Waiting to run
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Waiting to run
Test Packaging / Build & Test PyPI Package (push) Waiting to run
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00
..

@elizaos/plugin-anthropic

Anthropic Claude model provider for elizaOS. Adds Claude text generation, streaming, image description, and structured JSON output to any Eliza agent.

What it does

This plugin registers Claude model handlers into the elizaOS model dispatch layer. Once loaded, calls to runtime.useModel() for any text, reasoning, or image-description model type are routed to the Anthropic API (or Claude Code CLI, or OAuth subscription, depending on your auth mode).

Capabilities added:

  • Text generation — all ModelType tiers: TEXT_NANO, TEXT_SMALL, TEXT_MEDIUM, TEXT_LARGE, TEXT_MEGA, RESPONSE_HANDLER, ACTION_PLANNER
  • ReasoningTEXT_REASONING_SMALL and TEXT_REASONING_LARGE with configurable chain-of-thought token budget
  • Image descriptionIMAGE_DESCRIPTION returns { title, description } from an image URL
  • Streaming — all text handlers support stream: true, returning an async TextStreamResult
  • Structured output — pass responseSchema (JSON Schema) to any text handler to receive parsed JSON
  • Tool calling — pass tools, toolChoice to any text handler for native Anthropic tool use
  • Prompt cachingcache_control: ephemeral applied automatically to system prompts and stable prompt segments

Auto-enable

The plugin is automatically enabled when ANTHROPIC_API_KEY or CLAUDE_API_KEY is present in the environment. No manual plugin registration is needed in that case.

To register manually:

import { anthropicPlugin } from "@elizaos/plugin-anthropic";
import { AgentRuntime } from "@elizaos/core";

const runtime = new AgentRuntime({
  plugins: [anthropicPlugin],
  // ...
});

Usage

import { ModelType } from "@elizaos/core";

// Text generation
const text = await runtime.useModel(ModelType.TEXT_LARGE, {
  prompt: "Explain quantum computing in simple terms",
});

// Streaming
const result = await runtime.useModel(ModelType.TEXT_LARGE, {
  prompt: "Count from 1 to 5.",
  stream: true,
  onStreamChunk: (chunk) => process.stdout.write(chunk),
});

// Structured output
const obj = await runtime.useModel(ModelType.TEXT_SMALL, {
  prompt: "Return a JSON object with a greeting field.",
  responseSchema: {
    type: "object",
    properties: { greeting: { type: "string" } },
    required: ["greeting"],
  },
});

// Image description
const { title, description } = await runtime.useModel(ModelType.IMAGE_DESCRIPTION, {
  imageUrl: "https://example.com/photo.jpg",
});

Configuration

Env var Required Default Description
ANTHROPIC_API_KEY Yes* Anthropic API key (sk-ant-...)
CLAUDE_API_KEY Alt Alias accepted alongside ANTHROPIC_API_KEY
ANTHROPIC_AUTH_MODE No apikey Auth mode: apikey, oauth, or claude-cli
ANTHROPIC_SMALL_MODEL No claude-haiku-4-5-20251001 Model for small-tier calls
ANTHROPIC_LARGE_MODEL No claude-opus-4-7 Model for large-tier calls
ANTHROPIC_NANO_MODEL No (small fallback) Model for TEXT_NANO
ANTHROPIC_MEDIUM_MODEL No (small fallback) Model for TEXT_MEDIUM
ANTHROPIC_MEGA_MODEL No (large fallback) Model for TEXT_MEGA
ANTHROPIC_REASONING_SMALL_MODEL No (small fallback) Model for TEXT_REASONING_SMALL
ANTHROPIC_REASONING_LARGE_MODEL No (large fallback) Model for TEXT_REASONING_LARGE
ANTHROPIC_BASE_URL No https://api.anthropic.com/v1 API base URL override
ANTHROPIC_BROWSER_BASE_URL No Proxy URL for browser builds
ANTHROPIC_COT_BUDGET No 0 Chain-of-thought token budget (0 = disabled)
ANTHROPIC_COT_BUDGET_SMALL No CoT budget for small-size models
ANTHROPIC_COT_BUDGET_LARGE No CoT budget for large-size models
ANTHROPIC_PROMPT_CACHE_TTL No 5m Prompt cache TTL: "5m" or "1h"
ANTHROPIC_EXPERIMENTAL_TELEMETRY No false Enable Vercel AI SDK telemetry

* Required unless ANTHROPIC_AUTH_MODE=oauth or ANTHROPIC_AUTH_MODE=claude-cli.

OAuth mode

Set ANTHROPIC_AUTH_MODE=oauth. Token is read from (in order):

  1. CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_OAUTH_TOKEN env var
  2. macOS keychain (Claude Code-credentials)
  3. ~/.claude/.credentials.json (or $CLAUDE_CONFIG_DIR/.credentials.json)

Run claude auth login (Claude Code CLI) to populate the credential store.

CLI mode

Set ANTHROPIC_AUTH_MODE=claude-cli. Requires the claude binary on PATH (install from code.claude.com). Invokes claude -p for each model call. Does not support messages, tools, toolChoice, or responseSchema.

Caveats

  • Opus 4.x models only accept temperature=1. The plugin enforces this automatically.
  • temperature and topP are mutually exclusive in the Anthropic API. Supplying both logs a warning and drops topP.
  • maxTokens is capped at 32k (Opus 4) or 64k (all others) to avoid API 400 errors.
  • Browser builds (exports.browser) never access process.env. Set ANTHROPIC_BROWSER_BASE_URL to a server-side proxy; do not expose your API key in client-side code.

Development

bun run --cwd plugins/plugin-anthropic build
bun run --cwd plugins/plugin-anthropic test
bun run --cwd plugins/plugin-anthropic typecheck

For agent-facing documentation (file layout, how to add handlers, extension steps), see CLAUDE.md.