Skip to main content

Factory Droid

Factory's Droid CLI has native OpenTelemetry support. Once enabled, Oodle collects metrics so you can track adoption, engineering impact, tool activity, and the repositories Droid works in across your organization.

Getting Started

1. Enable Telemetry

The fastest way is to use the integration tile in the Oodle UI:

  1. Navigate to Settings → Integrations
  2. Open the AI Observability section
  3. Click the Factory Droid tile
  4. Select an API key and follow the steps shown

Alternatively, set two environment variables wherever Droid runs (shell profile, CI environment, or MDM-managed configuration):

# Droid appends /v1/metrics to the endpoint
export OTEL_TELEMETRY_ENDPOINT=https://<OTLP_ENDPOINT>
export OTEL_TELEMETRY_HEADERS="X-API-KEY=<API_KEY>,X-OODLE-INSTANCE=<INSTANCE_ID>"

Replace <OTLP_ENDPOINT>, <API_KEY>, and <INSTANCE_ID> with values from the integration tile.

Metrics export every 60 seconds while sessions are active, and flow to both Factory and Oodle simultaneously. A failure to reach Oodle never affects Droid itself.

2. Roll Out to Your Team

Add the two environment variables to your dotfiles repository, developer machine images, or configuration management tool.

3. Verify Data

Once telemetry starts flowing, navigate to AI Cost Management → Factory Droid in the Oodle sidebar.

Analysis Page

The Factory Droid page is organized around the questions engineering leadership asks, with a tab per use case.

Adoption

Is Factory getting adopted, and by whom?

PanelDescription
Active Users / SessionsDistinct users and sessions with Droid activity
Logins and Slash CommandsEngagement signals over the selected range
Activity by ModelWhich models drive Droid usage
Model Mix / Autonomy Mode / EnvironmentHow Droid is run: model split, autonomy levels, interactive vs other environments
Version AdoptionHow quickly the team upgrades the Droid CLI
Top Users by ActivityThe power users driving adoption, sorted and paginated

Engineering Impact

What is Droid actually producing?

PanelDescription
Files Modified / Lines ModifiedCode change volume attributable to Droid
Commits and PRs CreatedHow much of Droid's work ships
Files Read vs Files ModifiedExploration vs change balance
By ExtensionWhich parts of the stack Droid touches most
Per-User LeaderboardsLines, commits, and PRs by developer

Tools & Automation

How does Droid work, and where does it struggle?

PanelDescription
Tool Invocations and Success RateOverall tool call volume and health
Execution Time (p50 / p95)Tool latency trends and per-tool p95
Tool FailuresWhich tools fail most
MCP Tools / Skills / HooksAutomation surface usage: MCP calls by server, skill invocations, hook activity
Installed Skills InventoryWhich skills are installed, and where

Repo Insights

Where across your codebase estate does Droid operate, and how healthy are those repos? Built from the droid_repo_metadata metric that Droid emits for every session:

PanelDescription
Repos Touched / Sessions per RepoCoverage of your repository estate
Repos with Tests / CI / Linters / DocsGuardrail coverage of the repos Droid works in
Primary Language DistributionLanguage mix of touched repos
Repo ProfilePer-repo size, languages, contributors, and commit velocity
Repo GuardrailsTest frameworks, CI/CD, linters, security, and observability tooling per repo
note

Repositories are identified by a privacy-preserving hash of the remote URL, so repository names and URLs never leave the developer's machine.

Sessions

The Sessions tab lists individual Droid sessions built entirely from metrics:

ColumnDescription
Start TimeWhen the session began
SessionDroid session ID
UserEmail of the developer
DurationWall-clock duration
# ToolsTool invocations in the session
Files ReadFiles Droid read
CommitsCommits created
# PRsPull requests created

What Gets Collected

Droid exports the following OpenTelemetry metrics with delta temporality. Every data point carries user.email, user.id, session.id, model_id, organization.id, and service.version, so all views can be filtered by user, model, and version.

MetricExtra LabelsDescription
droid.tool.invocationstool_name, tool_category, tool_runtime, tool_succeeded, environment_type, session_autonomy_modeTool invocations
droid.tool.execution_timesame as invocationsTool execution time histogram (ms)
droid.code.files_readfile_extensionFiles read
droid.code.files_modifiedfile_extensionFiles modified
droid.code.lines_modifiedLines of code modified
droid.git.commitsCommits created
droid.git.pull_requestsPull requests created
droid.mcp.tool_invocationsmcp_server, tool_nameMCP tool invocations
droid.skill.invocationsskill_nameSkill invocations
droid.hook.invocationsHook invocations
droid.slash_command.invocationsslash_command_nameSlash command usage
droid.auth.login_successauth_login_methodSuccessful logins
droid.repo.metadatarepo_* profile labelsPer-session repository profile snapshot (language, size, tests, CI, linters, contributors, commit velocity)

Further Reading


Support

If you need assistance or have any questions, please reach out to us through: