Skip to content

Connections: one-click, instant on/off for every AI app (context + observation), for people and agents - #88

Merged
KAVentures merged 43 commits into
mainfrom
feat/unified-connections
Sep 27, 2026
Merged

KAVentures merged 43 commits into
mainfrom
feat/unified-connections

Conversation

@KAVentures

@KAVentures KAVentures commented Sep 26, 2026 •

Copy link
Copy Markdown
Owner

Merge order

Merge #89 first, then #88. This branch contains #89 as an explicit parent and has been integration-merged so the unified Connections layer cannot regress the richer Claude Code/Codex observability added by #89.

Why

Connecting AI apps was spread over separate MCP buttons, observation cards, and manual snippets. There was no single place to install, enable/disable, remove, or inspect both context access and structural observation.

What

Connect tab → Connections adds one row per supported app with separate Context (MCP) and Observe controls.

  • Claude Code: MCP plus rich hooks + logs-only OTel observation from v0.90: make agent observability rich and capability-aware #89.
  • Codex: MCP plus structural OTel logs + traces from v0.90: make agent observability rich and capability-aware #89; prompt/response/guardian content logging stays disabled.
  • Claude Desktop, Cursor, VS Code, Windsurf, Gemini CLI: one-click MCP configuration where supported.
  • On first use, configuration is installed conservatively with backup/preserve/refuse-on-conflict behavior.
  • Off/on uses persistent runtime switches enforced on every MCP call or supported observation ingress; no client restart is required merely to flip the OWG switch.
  • Remove uninstalls only OWG-owned configuration.
  • owg_connect.py provides the same operations for scripts/agents.
  • GET/POST /v1/connections backs the dashboard and remains authenticated; it is deliberately not exposed as an MCP tool.

Integration with #89

The combined tree preserves:

  • Claude model calls, model identity, token usage, approval decisions, failures and subagent handoffs.
  • Codex structural business events + trace hierarchy, including multi-agent handoffs when emitted.
  • capability-aware 0 vs — observability semantics and rich MCP get_agent_runs summaries.
  • write-only local telemetry credentials and strict content allowlists.

The Connections Observe switch gates both the Claude and Codex native ingest endpoints without downgrading their telemetry configuration.

Additional fixes found during integration

  • Fixed the shared Windows CI assertion that incorrectly expected POSIX 0600 mode bits on Windows.
  • Fixed a real Windows connection-switch cache race: rapid atomic replacements of connections.json could retain the same observed mtime and make off appear as on. OWG now updates its in-process cache immediately after its own write and clears stale cache state when the switch file disappears.
  • Added regression tests for immediate switch-cache coherence and stale-cache clearing.
  • Updated manual/setup copy so Codex correctly says structural OTel logs + traces, not the older trace-only behavior.

Verification

Final combined head is green across:

  • Windows pytest
  • Ubuntu pytest + repeat-suite + repository DB check
  • macOS pytest
  • browser/dashboard JavaScript
  • self-hosted Gateway container
  • release packaging

#89 is independently green as well.

No additional version bump beyond #89's 0.90.0; #88 is the Connections layer on top.

Merge the provider observability work into the rebased feature branch while retaining PR #86 one-click setup changes.
One Connections table on the Connect tab covers Claude Code, Claude
Desktop, Codex, Cursor, VS Code, Windsurf and Gemini CLI. Each app has a
Context switch (MCP read access) and, where the app supports it, an
Observe switch (Claude Code hooks, Codex OTel traces).

- First 'on' installs the app's config through the same safe writer as
  before: backup first, other settings preserved, no duplicates, refuse on
  invalid files or hand-written entries.
- 'off' flips a persistent runtime switch checked on every MCP tool call
  (launcher now passes --client <id>) and every agent-ingest event, so it
  takes effect immediately without restarting the app.
- 'remove' uninstalls the app's config.
- The same operations are available to agents and scripts through
  owg_connect.py (works from any directory, JSON output) and to the
  dashboard through GET/POST /v1/connections.
- Rows show evidence, not config: 'Context used 3m ago' from MCP activity
  and 'Telemetry observed' from agent traces.
- Everything the table covers moves under 'More ways to connect'; the
  observe section now only covers custom agents (SDK / OTel / events).

Switching connections is intentionally not an MCP tool so a connected app
cannot widen its own or another app's access.
@KAVentures
KAVentures changed the base branch from main to feat/rich-agent-observability-v090-rebased September 27, 2026 08:45
@KAVentures
KAVentures changed the base branch from feat/rich-agent-observability-v090-rebased to main September 27, 2026 08:45
@KAVentures
KAVentures changed the base branch from main to feat/rich-agent-observability-v090-rebased September 27, 2026 08:46
@KAVentures
KAVentures changed the base branch from feat/rich-agent-observability-v090-rebased to main September 27, 2026 08:46
@KAVentures
KAVentures changed the base branch from main to feat/rich-agent-observability-v090-rebased September 27, 2026 08:46
@KAVentures
KAVentures changed the base branch from feat/rich-agent-observability-v090-rebased to main September 27, 2026 08:46
@KAVentures
KAVentures changed the base branch from main to feat/rich-agent-observability-v090-rebased September 27, 2026 08:46
@KAVentures
KAVentures changed the base branch from feat/rich-agent-observability-v090-rebased to main September 27, 2026 08:46
@KAVentures
KAVentures merged commit 6ab881c into main Sep 27, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant