Skip to content

feat(mcp): facade-only run mode — adapter-less [mcp] config is valid#1453

Merged
thepagent merged 1 commit into
mainfrom
feat/facade-only-run
Jul 25, 2026
Merged

feat(mcp): facade-only run mode — adapter-less [mcp] config is valid#1453
thepagent merged 1 commit into
mainfrom
feat/facade-only-run

Conversation

@chaodu-agent

Copy link
Copy Markdown
Collaborator

Closes #1451, per the #1449 review discussion: the standalone facade entrypoint existed only because openab run refused to start without a chat adapter. One entrypoint, config-driven.

What changes

  • openab run with no chat adapter but [mcp] present now serves just the OAB MCP Facade listener in the foreground (the facade is the workload; bind failure/server exit = process exit, fail fast). Log line announces facade-only mode.
  • The no adapter configured bail message now mentions the [mcp] option.
  • Removes openab-agent mcp-facade — serving surfaces don't belong on the coding-agent binary; shipped only hours ago in feat(mcp): OAB MCP Facade MVP — shared openab-mcp crate + broker loopback HTTP server #1448, nothing depends on it.
  • config.toml.example documents the mode.

Who needs facade-only

Coding-CLI-only hosts (no bot anywhere), provider/dev iteration loops (validated tonight — the #1449 e2e had to detour to the agent binary), and CI/agent hosts where a chat token would be absurd. Normal bot deployments are unchanged: [discord]+[mcp] in one process remains the production path.

Validation

  • Root workspace: build release, 18 tests pass; openab-agent workspace builds; cargo clippy --workspace --all-features -- -D warnings clean.
  • Live functional check (macOS arm64): openab run -c with a two-line [mcp]-only config → facade-only mode + listening logged, MCP initialize on the configured port returns HTTP 200; process killed cleanly.

Review Contract

Goal

Make an adapter-less config with [mcp] a valid openab run deployment (facade-only), and remove the misplaced openab-agent mcp-facade serving surface.

Non-goals

  • No new CLI subcommands (explicit maintainer direction — config-driven, not CLI-driven).
  • No change to the production path ([discord]+[mcp] in-process facade).
  • Native-adapter lifecycle management by the broker (config-driven adapter start) — tracked as the follow-up direction on Relocate standalone mcp-facade entrypoint from openab-agent to the broker binary #1451, separate PR.
  • openab-agent's client-side mcp CLI (list|status|doctor|connect|login) is untouched.

Accepted Residual Risks

Acceptance Criteria

  • openab run with [mcp]-only config serves /mcp (initialize succeeds) and logs facade-only mode; with neither adapter nor [mcp], the bail fires with the updated message.
  • openab-agent mcp-facade no longer parses; openab-agent mcp … client commands unaffected.
  • fmt/clippy/test green on both workspaces.

Follow-ups

…alid

Closes #1451. An adapter-less config with [mcp] present now runs just the
OAB MCP Facade listener in the foreground (one entrypoint, config-driven)
instead of bailing with 'no adapter configured'. The bail message now
mentions the [mcp] option. Removes the openab-agent mcp-facade
subcommand — serving surfaces do not belong on the coding-agent binary
(nothing shipped depends on it; #1449 established the openab-side home).
@chaodu-agent
chaodu-agent requested a review from thepagent as a code owner July 25, 2026 01:34
@thepagent
thepagent merged commit ee49aae into main Jul 25, 2026
43 of 45 checks passed
pahud pushed a commit to brettchien/openab that referenced this pull request Jul 25, 2026
…browser tunnel wiring alongside the [mcp] facade block; Cargo.lock regenerated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Relocate standalone mcp-facade entrypoint from openab-agent to the broker binary

2 participants