Skip to content

feat(proxy): single all-in-one binary by default (CLI + TUI + GUI + MCP) - #187

Merged
dmdhrumilmistry merged 1 commit into
devfrom
feat/proxy-single-binary
Nov 4, 2026
Merged

dmdhrumilmistry merged 1 commit into
devfrom
feat/proxy-single-binary

Conversation

@dmdhrumilmistry

Copy link
Copy Markdown
Collaborator

Answers "can't we have a single binary for everything?" — yes. It already was one binary with all subcommands; the GUI was just gated behind an opt-in feature. This makes gui a default feature, so a plain cargo build / make proxy yields the do-everything binary.

Change

  • default = ["mitm", "gui"] in proxy-rs/Cargo.toml.
  • A plain build now produces one binary with: headless CLI (run), terminal UI (tui), desktop GUI (gui), MCP server (mcp), plus ca / export.
  • It still runs headless — the GUI's GL/X11 libraries are only loaded when the window is actually opened (offat-proxy gui), so servers are unaffected.
  • Minimal build still available: cargo build --no-default-features (optionally --features mitm) drops the GUI/graphics and TLS-interception dependencies; make proxy-min builds it. In that build, the gui command explains how to get the GUI back and points to tui.
  • Docs (README, docs/proxy.md) and Makefile updated (proxy = all-in-one, proxy-min = minimal).

Verification

  • Default all-in-one build compiles (GUI deps build with no system libraries) and 57 unit tests pass; cargo fmt --check clean.
  • --no-default-features minimal build compiles and the gui command prints the right guidance.
  • offat-proxy --help lists run|tui|gui|mcp|ca|export.

…GUI + MCP)

Make `gui` a default feature so a plain `cargo build` / `make proxy` produces one
binary with every front-end: headless CLI, terminal UI (tui), desktop GUI (gui)
and the MCP server. It still runs on headless servers - the GUI's graphics
libraries are only loaded when the window is actually opened.

- Cargo: default = ["mitm", "gui"].
- A minimal binary with no GUI/graphics or TLS-interception deps is still
  available via `--no-default-features` (+ `--features mitm` for TLS interception);
  `make proxy-min` builds it. In that build the `gui` command explains how to get
  the GUI back and points to `tui`.
- Docs (README, docs/proxy.md) and Makefile updated (proxy = all-in-one,
  proxy-min = minimal).

Verified: default all-in-one build + 57 unit tests pass; `--no-default-features`
minimal build compiles and handles `gui` gracefully; fmt clean.
Copilot AI balanced review requested due to automatic review settings November 4, 2026 20:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@dmdhrumilmistry
dmdhrumilmistry merged commit a43002b into dev Nov 4, 2026
14 checks passed
@dmdhrumilmistry
dmdhrumilmistry deleted the feat/proxy-single-binary branch November 4, 2026 20:28
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.

2 participants