voight.log() or has the SDK wired in.
Agent identity
Each agent has a uniqueid (a cuid) assigned by the server the first time it’s seen. From that point on, the SDK matches events to that agent by id, not by name — meaning renaming or moving the project folder doesn’t break the timeline.
How identity is resolved by the SDK, in priority order:
VOIGHT_AGENT_IDenv override — explicit, highest priority. Useful for CI and multi-agent setups where identity is controlled from outside..voight-agent-idmarker file — a plain-text file in the project’s cwd holding the cuid. Written by the SDK after the first successful event so subsequent events match by primary key.- Framework label fallback —
claude-code:<folder-basename>for first-time installs,claude-code:<session-slice>if cwd is unavailable.
id; otherwise try snsName, then displayName, then create a new agent row.
How agents are created
Three paths:- Tool-emitted — the SDK auto-creates an agent the first time it sees an event from a project (the default for Claude Code, Cursor, Codex).
- SDK-instrumented — you import
@voightxyz/sdkin your code and explicitly pass anagentIdto the constructor. - On-chain registered — agents already registered on Solana’s Agent Registry program are imported automatically by Voight’s indexer with
source='agent-registry'.
Agent metadata
Each agent carries two metadata blobs:metadata(chain-derived) — written by the on-chain indexer when the agent is registered. IncludesagentUri(off-chain pointer),feedback_count,response_count,revoke_count.enriched(off-chain) — written by a separate metadata-enrichment worker that fetches theagentUriJSON. Includes display name, avatar, capabilities, services declared.
Multi-agent setups
You can run as many agents as you want. The dashboard aggregates across all of them while letting you filter per-agent. Common multi-agent patterns:- Per-project agent — every Claude Code session in a different repo becomes its own agent. Default behaviour.
- Per-bot agent — a long-running autonomous bot gets one stable
agentId(e.g. SNS nametrading-bot.sol). - Per-flow agent — split an autonomous system into multiple agents by responsibility (e.g.
market-watcher.sol,executor.sol).
On-chain agents on the Explorer
The public Explorer indexes every agent registered on the Solana Agent Registry — including ones not using Voight for telemetry. Voight cross-references your agents with the Registry: if you register an agent on-chain (mint flow shipping in v1.0), it appears on the Explorer with on-chain reputation, capability declarations, and x402 payment rails. Agents stay private to your dashboard unless you opt-in to the Explorer by registering on-chain.Soft delete + isolation
When you delete an agent from the dashboard:- The agent is soft-deleted (
Agent.deletedAttimestamp set, row not removed) - Subsequent events ingested for that
agentIdreturn410 Goneto the SDK - The agent disappears from all dashboard reads (events, sessions, traces, errors, alerts)
- Other agents from the same user keep ingesting normally — isolation is per-agent, not per-API-key