@lythos/agent-adapter-claude-sdk
v0.14.5
Published
Claude SDK adapter for `@lythos/agent-adapter`. Uses `@anthropic-ai/claude-agent-sdk` (`query()` API) instead of the fragile `claude -p` CLI path.
Maintainers
Readme
@lythos/agent-adapter-claude-sdk
Claude SDK adapter for @lythos/agent-adapter. Uses @anthropic-ai/claude-agent-sdk (query() API) instead of the fragile claude -p CLI path.
Install
bun add @lythos/agent-adapter-claude-sdkSetup
Create .claude-sdk-key in your project root (same directory as package.json):
ANTHROPIC_API_KEY=sk-ant-...
# Optional: custom base URL (e.g. AWS Bedrock, Vertex)
ANTHROPIC_BASE_URL=https://api.anthropic.comOr set the environment variable directly:
export ANTHROPIC_API_KEY=sk-ant-...Usage
Import once — the adapter self-registers:
import '@lythos/agent-adapter-claude-sdk'
import { useAgent } from '@lythos/agent-adapter'
const agent = useAgent('claude-sdk')
const result = await agent.spawn({
cwd: '/tmp',
brief: 'Write "hello" to output.txt',
timeoutMs: 60000,
})
console.log(result.stdout)Why SDK over CLI?
| | claude -p CLI | SDK query() |
|---|---|---|
| Deferred tool deadlock | ❌ Hangs | ✅ No deadlock |
| Stdin pipe bugs | ❌ ARM64 flush issues | ✅ Direct API |
| Env pollution | ❌ Nested detection | ✅ Clean |
| Tool permissions | --permission-mode bypassPermissions | allowDangerouslySkipPermissions: true |
| Output reliability | 6 commits, never produced | ✅ Stable |
How it works
- Reads
.claude-sdk-keyon module load (falls back to env vars) - Calls
query({ prompt, options: { cwd, allowedTools, disallowedTools, permissionMode: 'bypassPermissions' } }) - Iterates the async generator until
type: 'result'message - Returns
AgentRunResultwith stdout, stderr, code, durationMs
License
MIT
