Skip to content

Audit Trail (Nectar)

Nectar is Honeybee’s audit layer. It answers one question: “What did the agent do?”

Every action an agent takes — every LLM call, every tool execution, every file write, every network request — is captured, correlated, and stored for review.

Nectar captures 7 layers of agent activity:

LayerWhatHow
Prompts & responsesFull LLM request/response payloadsTelemetry hooks in agent runner
Tool executionTool name, arguments, result, durationPre/post tool hooks
Carapace scansScan results, scores, findings, actionsGuard integration
File system diffsFiles created, modified, deletedMemFS changeset or FUSE overlay diff
Network eventsSSL plaintext (outbound + inbound)eBPF firewall
Process treesWhich processes spawned whicheBPF process probes
State changesACP state mutations, events, claimsStore hooks

Every audit event carries a trace_id that links it to the originating chain:

Queen session (trace_id: abc-123)
└── Worker spawn (trace_id: abc-123, span: worker-1)
├── LLM call (trace_id: abc-123, span: worker-1.llm.1)
├── Tool: write_file (trace_id: abc-123, span: worker-1.tool.1)
├── Carapace scan (trace_id: abc-123, span: worker-1.scan.1)
└── Network: POST api.openai.com (trace_id: abc-123, span: worker-1.net.1)

This means you can take any single event and trace it back through the full chain: which agent, which session, which LLM call triggered which tool, and what network requests resulted.

Every Honeybee deployment writes audit events to local JSONL files:

~/.honeyb/projects/<slug>/telemetry/<date>.jsonl

One file per day, auto-rotated. Events are appended synchronously — no data loss on crash.

For teams, Nectar provides cloud storage with queryable metadata:

StoreWhatAccess pattern
D1 (Cloudflare)Event metadata (type, timestamp, trace_id, score, agent_id)SQL queries, dashboards, filtering
R2 (Cloudflare)Full payloads (prompts, responses, file diffs)Fetch on demand from dashboard

The split keeps queries fast (D1 is indexed) while allowing full payload review when needed (R2 stores bulk data cheaply).

Agent activity
→ Local JSONL (always, immediate)
→ Aggregation (5-minute summaries)
→ Cloud ingest (opt-in, summaries only)
→ D1 metadata + R2 payloads (team dashboard)

Cloud sync sends aggregated summaries only — never raw prompts, responses, or content. Teams that need full payload review use the local JSONL or configure explicit payload upload.

WhatLocalCloud (default)Cloud (full audit)
Event countsYesYesYes
Timing / latencyYesYesYes
Scores / findingsYesYesYes
Tool namesYesYesYes
Prompt contentYesNoOpt-in
Response contentYesNoOpt-in
File diffsYesNoOpt-in
Network payloadsYesNoOpt-in

Default cloud mode is structural metadata only. Content never leaves the local machine unless explicitly configured.

Nectar provides the evidence chain auditors need:

  1. Complete capture: Every LLM interaction, tool use, and file change is recorded
  2. Tamper evidence: JSONL append-only log with timestamps
  3. Correlation: trace_id links every action to its originating session
  4. Scan results: Carapace scores prove every input/output was checked

”Prove the agent didn’t access unauthorized data”

Section titled “”Prove the agent didn’t access unauthorized data””

Combining Nectar with the eBPF firewall:

  1. Network log: Every SSL connection, every domain, every payload
  2. File log: Every file read/write with full diff
  3. Process log: Every subprocess spawned by the agent
  4. Claim log: Every resource lock acquired and released

These events form the backbone of Nectar’s audit trail:

EventSourceKey fields
llm_callRunnermodel, tokens, latency, cost
llm_errorRunnermodel, error type, retry count
tool_callRunnertool name, duration, success
agent_completeRunnerexit reason
context_compactionRunnertokens before/after
guard_scanGuardside, score, action, findings
agent_spawnOrchestratoragent ID, role, type, model
agent_exitOrchestratoragent ID, exit reason, duration
agent_killOrchestratoragent ID, kill reason
protocol_startOrchestratorprotocol name, agent count
protocol_endOrchestratorduration, total tokens, total cost
dance_callWebSockettool name, caller role, latency