Skip to content

Repository files navigation

OmniDevX Core

Go CI Go Lint Go SAST Docs Docs Visualization License

Core interfaces and canonical types for OmniDevX — the PlexusOne developer-experience telemetry domain. OmniDevX collects and normalizes events from AI coding agents and development tools so frameworks such as SPACE, AI SPACE, and DORA can be computed over one vendor-neutral event model.

Not OmniDXI. omnidxi is Digital Experience Intelligence — a facade over product-analytics platforms (Amplitude, Mixpanel, Heap, Pendo). OmniDevX observes how developers and AI agents build software. The two domains are unrelated.

Layout

  • Root package omnidevx — canonical Event IR, Collector contract, periods, provenance.
  • store — JSONL event store (~/.plexusone/omnidevx/data/), idempotent writes, period/product-scoped reads.
  • identity — resolves GitHub usernames, hashed git emails, and device-scoped local accounts to a canonical personId.
  • report — builds DeveloperPeriodReport (omnidevx.developer-period/v1) from stored events: daily summaries, weekly/monthly rollups, combined + bySource metrics, coverage scoring.
  • providers/claudecode — thin provider reading Claude Code local session history (~/.claude/projects/). Stdlib only.
  • providers/git — thin provider emitting devx.change.committed from local git history, with AI co-author attribution. Built on grokify/gogit.
  • providers/genericotel — OTLP/JSON metrics receiver for tools without a dedicated provider.

Thick providers with heavy dependencies live in vendor repos, e.g. the Codex CLI collector in omni-openai/omnidevx (requires a SQLite driver) and the GitHub contribution collector in omni-github/omnidevx (REST + GraphQL).

Privacy

Canonical events carry metadata only — event types, durations, counts, models, token figures, and repository identifiers. Prompt text, model responses, and file contents are never captured by default.

Usage

collector, err := claudecode.New(claudecode.Options{})
if err != nil {
    // handle
}
result, err := collector.Collect(ctx, omnidevx.CollectRequest{
    Period:  omnidevx.Period{Start: weekStart, End: weekEnd},
    Subject: omnidevx.SubjectRef{PersonID: "person:jane"},
})

Provenance on every event records the collection mode (history, otel, hooks, api, survey) and a confidence score, so downstream metrics can distinguish observed values from historical reconstruction.

Period reports

s, _ := store.Open(store.Options{})
read, err := s.Read(ctx, store.Query{Period: period})

r := report.Build(read.Events, report.Subject{PersonID: "person:jane"}, period)
// r.Metrics.Combined["commits"], r.Metrics.BySource["git/git"]["commits"], ...
// r.Sources, r.Quality.CoverageScore

report.Build is reproducible: the same stored events always produce the same report, and reprocessing with a changed metric formula never requires recollection. See Period Reports for the combined-vs-bySource rules and Identity for resolving multiple accounts to one person.

Specifications

Ecosystem PRD/TRD/PLAN/ROADMAP currently reside in devfolio/docs/specs and will migrate here.

License

MIT

About

Core interfaces and canonical types for OmniDevX — the PlexusOne developer-experience telemetry domain. OmniDevX collects and normalizes events from AI coding agents and development tools so frameworks such as SPACE, AI SPACE, and DORA can be computed over one vendor-neutral event model.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages