# Usage Data Reporting [AI Governance](./ai-governance.md) requires reporting usage data to Tallyman, a Coder-managed server for billing and reporting purposes. Coder only captures and sends the following information, related to your deployment ID: - number of agent workspace builds consumed - number of AI Governance seats consumed - total Coder Agent runtime consumed per hour, in milliseconds No user-identifiable information or additional metrics are sent to Tallyman. This information is also shared with [Metronome](https://metronome.com), a Stripe product and Coder partner for usage-based billing and reporting. To send usage data, your Coder deployment must be able to make outbound HTTPS requests to `https://tallyman-prod.coder.com`. Usage data is sent approximately every 17 minutes and can be monitored via `coderd` logs. Example of a successful request (requires debug logging enabled [`CODER_LOG_FILTER=.*`](../reference/cli/server.md#-l---log-filter)): ```sh [debu] published usage events to tallyman accepted=5 rejected=0 ``` Example of a request payload: ```txt POST /api/v1/events/ingest HTTP/1.1 Host: tallyman-prod.coder.com Content-Type: application/json Coder-License-Key: # your license JWT for verification Coder-Deployment-ID: 8a4e92f1-3b7c-4d5e-9f12-abc123def456 # your deployment ID { "events": [ { "id": "550e8400-e29b-41d4-a716-446655440000", # unique event ID generated by Coder "event_type": "dc_managed_agents_v1", # aka. agent workspace builds "event_data": { "count": 1 }, "created_at": "2025-01-15T14:30:00Z" }, { "id": "hb_agent_runtime_v1:2025-01-15_14:00:00", # unique event ID generated by Coder "event_type": "hb_agent_runtime_v1", # aka. Coder Agent runtime "event_data": { "runtime_ms": 3600000 }, "created_at": "2025-01-15T14:00:00Z" # start of the hour the runtime was consumed in } ] } ``` Example of a failed request (e.g. Tallyman Server is blocked by your network): ```sh [warn] failed to send publish request to tallyman count=5 error="Post \"https://tallyman-prod.coder.com/api/v1/events/ingest\": dial tcp: lookup tallyman-prod.coder.com: no such host" ``` > [!NOTE] > Air-gapped deployments and/or those with legal restrictions around usage reporting can [contact us](https://coder.com/contact) to discuss alternative methods. ## Agent runtime measurement Total Coder Agent runtime is summed from per-message generation time (`runtime_ms` on chat messages). A message's runtime is the wall-clock duration of the model invocation that produced its content, measured from just before the request to the model provider opens until the response is fully consumed. What counts: - Assistant generation steps, in both top-level chats and sub-agent chats. - Context compaction (summarization) model calls. - Interrupted generation: the time streamed before the interrupt is kept on the partial assistant message. What does not count: - Local tool execution, including waiting on sub-agents. A sub-agent is its own chat and records its own model invocations, so counting the parent's wait would double count. - Idle time: chats waiting for user input or external tool results. - Failed model calls whose output was discarded. Retried and errored attempts persist no content, so they record no runtime. - Ancillary model calls that produce no chat messages, such as title generation.