Live in 4 steps.
// from zero to a streaming trace.
AgentScope is OpenTelemetry under the hood, so any HTTP-capable agent can ship spans. Below: the smallest path for ElizaOS, Solana Agent Kit, and a one-shot curl.
- 01
Register your agent
Sign in to the dashboard, click Register agent, and fill in name + wallet pubkey. You'll get a per-agent ingest token on the detail page — copy it, keep it server-side.
Free tier caps at 2 agents per account during the public beta.
- 02
Install the SDK
Pick the path that matches your stack. Both SDKs ship under @agentscopehq/* on npm — pinned to @alpha until 1.0. The curl path skips install entirely — just two env vars and you're ready for step 03.
shell npm registry# ElizaOS plugin $ pnpm add @agentscopehq/elizaos-plugin@alphashell npm registry# Solana Agent Kit (or any async TypeScript) $ pnpm add @agentscopehq/agent-kit-sdk@alphashell env setup# Nothing to install — every HTTP client works (curl, Python requests, …). # Export the two env vars the step 03 curl example references: $ export AGENTSCOPE_API_URL="https://api.agentscopehq.dev" $ export AGENTSCOPE_AGENT_TOKEN="tok_…" # from step 01Prefer one-shot REST over the full OTLP envelope? Hit POST /v1/spans with a flat JSON body — same auth, no resourceSpans nesting.
- 03
Instrument your agent
One init call at boot, then wrap each action. Nested traced() calls auto-parent into a tree.
src/agent/index.ts @agentscopehq/elizaos-pluginimport { initAgentScope, wrapActions } from '@agentscopehq/elizaos-plugin'; const sdk = initAgentScope(({ apiUrl: process.env.AGENTSCOPE_API_URL!, agentToken: process.env.AGENTSCOPE_AGENT_TOKEN!, }); export const myPlugin = { name: 'my-trading-plugin', actions: wrapActions([tradeAction, analyzeAction]), }; process.on('SIGTERM', () => sdk.shutdown());src/agent/index.ts @agentscopehq/agent-kit-sdkimport { initAgentScope, traced } from '@agentscopehq/agent-kit-sdk'; initAgentScope(({ apiUrl: process.env.AGENTSCOPE_API_URL!, agentToken: process.env.AGENTSCOPE_AGENT_TOKEN!, }); // Wrap any async action — nested traced() calls auto-parent. const sig = await traced('execute_trade', () => kit.trade(mint, amount, 'buy'), { 'solana.mint': mint, 'trade.amount_sol': amount, });POST /v1/traces OTLP/HTTP · JSON$ curl -X POST $AGENTSCOPE_API_URL/v1/traces \ -H "Content-Type: application/json" \ -d '{ "resourceSpans": [{ "resource": { "attributes": [ { "key": "agent.token", "value": { "stringValue": "$AGENTSCOPE_AGENT_TOKEN" } } ] }, "scopeSpans": [{ "spans": [{ "traceId": "5b8aa5a2d2c872e8321cf37308d69df2", "spanId": "051581bf3cb55c13", "name": "execute_trade", "startTimeUnixNano": "1700000000000000000", "endTimeUnixNano": "1700000001000000000" }] }] }] }'Works from any language. agent.token rides as an OTel resource attribute, not an HTTP header — survives proxy hops.
- 04
See traces in the dashboard
Boot your agent. Within seconds you'll see spans land in the Reasoning view, on-chain transactions parsed and timestamped under Transactions, and any rule breaches piped to Telegram.
- ✓ Reasoning tree with parent/child spans, durations, errors
- ✓ Tx ↔ span correlation via solana.tx.signature
- ✓ 11 anomaly rules out of the box: slippage spike, gas spike, error rate, drawdown, stale agent, decision↔swap mismatch, stale oracle, ghost execution, MEV sandwich, low balance, runaway loop