pulse·ashlr
v0.2 — peer-visibility live

shared mission control
for agentic-engineering teams.

Cofounder-scale visibility across every repo, every AI tool, every commit. Configurable peer-share. A privacy floor that's not a toggle — we never store prompts, completions, or code.

· OpenTelemetry-native· MIT core· Self-hostable
pulse · ~/code
SOURCESClaude Codeashlr-pluginGitHub commits + PRsCursor (soon)Copilot Metrics (soon)Windsurf (soon)
01 / ingest

one endpoint. every signal.

Pulse speaks OpenTelemetry GenAI semantic conventions. So do most of the AI tools you already use, or will soon.

AI activity

every claude session, every model, every dollar.

Native OpenTelemetry GenAI ingest at /api/otlp/v1/traces. Bearer-PAT-authenticated. Token counts in/out/cache, tool calls, model, repo. Zero prompts, zero completions, ever.

OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=
   https://pulse.ashlr.ai/api/otlp/v1/traces
OTEL_EXPORTER_OTLP_HEADERS=
   "authorization=Bearer pulse_pat_…"
GitHub

commits, PRs, reviews — across every repo you own.

Sign in with GitHub once; Pulse pulls last 30 days of commits and PRs across all your authorized repos and watermarks per-source for incremental syncs. Metadata only — no diffs, no descriptions, no comment text.

github_event   ON CONFLICT (repo_id, kind, external_id)
                     DO NOTHING

kinds: commit | pr_opened | pr_merged | pr_closed
ashlr-plugin

the savings layer.

If you use the ashlr-plugin Claude Code plugin (open-source, MIT), it auto-emits compact spans with tokens_saved per tool call. Pulse stores them under a dedicated source so the dashboard can attribute savings to specific tools.

ashlr.plugin.tokens_saved → activity_event.tokens_saved
ashlr.plugin.session_id   → claude.session.id (override)
ashlr.plugin.repo         → claude.repo.name  (override)
02 / privacy floor

not a toggle.
not a setting.
not negotiable.

Most observability tools start with 'we collect everything, you can opt out.' We start with the inverse: we collect what's safe by default and the dangerous things never enter the system.

things Pulse will never store
  • prompts
  • completions
  • user code · file contents · diffs
  • stdout / stderr
  • screenshots
  • keystrokes
  • AFK / idle metrics

Enforced at the schema layer (column absence) and at the API layer (peer-share-guard.ts rejects forbidden field names with 422 before the DB ever sees them).

03 / why pulse

for the team you actually have.

There are eight tools that show you DORA scores and burn-down charts. There's none that show you, your cofounder, and your agents on the same canvas.

1 to 20 engineers, not 1,000.

Built for the team that's still small enough to know everyone's name. We don't sell to VPs of Engineering chasing DORA metrics. We sell to founders who want to know what their cofounder shipped while they slept.

configurable peer-share, asymmetric by default.

Mason's cofounder can see Mason's client-* repos in real-time, but only weekly aggregates of his SaaS work. Different scopes, different granularities, different field whitelists — per peer, per repo glob.

agents are first-class actors.

When @agent[claude] commits, Pulse records it as such. The dashboard's actor breakdown shows you, your cofounder, and every agent on equal footing — because in 2026, that's what your team actually looks like.

stop pinging your cofounder
on Slack to ask "what'd you ship?"

One dashboard, every repo, every AI tool, every actor. Configurable peer-share. Open-source core. Self-hostable.

start tracking →