Skip to content

reference dependencies

Nik edited this page May 30, 2026 · 2 revisions

Dependencies

DroidProxy has a deliberately small dependency surface: one Swift package, one vendored runtime binary, the macOS system frameworks, and a separate set of npm dependencies for the marketing website.

Swift package dependencies

Declared in /Users/nikhilanand/droidproxy/src/Package.swift and pinned in /Users/nikhilanand/droidproxy/src/Package.resolved.

Dependency Declared Resolved Purpose Where used
Sparkle (github.com/sparkle-project/Sparkle) from: "2.5.0" 2.8.1 (revision 5581748cef2bae787496fe6d61139aebe0a451f6) macOS auto-update framework: appcast polling, EdDSA signature verification, and update installation. Linked into the CLIProxyMenuBar executable target; Sparkle.framework is copied into Contents/Frameworks and signed by create-app-bundle.sh. Driven from /Users/nikhilanand/droidproxy/src/Sources/AppDelegate.swift.

The package defines one executable product, CLIProxyMenuBar, targeting .macOS(.v13) with swift-tools-version: 5.9. The Resources directory (including config.yaml and the bundled binary) is declared as a copied resource. A CLIProxyMenuBarTests test target is also defined.

Vendored runtime dependency

The backend server is shipped as a prebuilt binary rather than a source dependency:

Dependency Version Purpose Where used
cli-proxy-api (from router-for-me/CLIProxyAPI) Auto-bumped (latest upstream darwin_aarch64), about 40 MB The actual provider proxy: serves Claude / Codex / Gemini / Kimi OAuth traffic on 127.0.0.1:8318. Committed at /Users/nikhilanand/droidproxy/src/Sources/Resources/cli-proxy-api, copied into Contents/Resources/, code-signed, and managed as a child process by ServerManager.

Notes:

  • Upstream releases are downloaded only by the /Users/nikhilanand/droidproxy/.github/workflows/update-cliproxyapi.yml workflow (12-hourly cron), which opens a chore(deps): bump CLIProxyAPI pull request. The release build itself does not re-download it; it ships the committed binary and verifies its version from the CLIProxyAPI Version: <x.y.z> banner (read via cli-proxy-api -h).
  • See Deployment for the full auto-bump and release flow.

macOS system frameworks

Imported across /Users/nikhilanand/droidproxy/src/Sources/**:

Framework Purpose
Cocoa App entry point (main.swift) and AppDelegate AppKit lifecycle.
AppKit Menu-bar UI, icon handling, and settings window chrome.
SwiftUI Settings UI (SettingsView, LogoView).
Network Raw TCP HTTP proxy in ThinkingProxy (NWListener / NWConnection).
ServiceManagement Launch-at-login registration in SettingsView.
UserNotifications User-facing notifications from AppDelegate.
WebKit Embedded web views (auth / login flows) in AppDelegate.
Combine Observable state in ServerManager and OAuthUsageTracker.

Website npm dependencies

The marketing site under /Users/nikhilanand/droidproxy/website is a separate build, configured by /Users/nikhilanand/droidproxy/website/package.json. It is independent of the app build and does not ship in the .app.

Dependency Version Purpose Where used
react ^19.0.0 UI library. Website runtime.
react-dom ^19.0.0 React DOM renderer. Website runtime.
vite ^6.0.0 Dev server and bundler (dev, build, preview scripts). Website build (dev dependency).
typescript ~5.7.0 Type checking; build runs tsc before vite build. Website build (dev dependency).
@vitejs/plugin-react ^4.3.0 Vite React integration. Website build (dev dependency).
@types/react ^19.0.0 React type definitions. Website build (dev dependency).
@types/react-dom ^19.0.0 React DOM type definitions. Website build (dev dependency).

Related pages

Clone this wiki locally