iCATBox Opens Up a Unified macOS Console for iOS Debugging
Routine iOS debugging hops between Terminal, Xcode, and Finder get consolidated into one open-source console, and the codebase demonstrates a clean split between generic tooling and project-specific configuration that other internal tools can copy.
iCATBox bundles routine iOS debugging actions into one SwiftUI/AppKit console. Developers pick a project and device, then run install, launch, screenshot, sandbox file edits, route jumps, log streaming, crash symbolication, and signing checks without leaving Xcode's orbit. It drives simulators through simctl and real devices through devicectl, with no third-party Swift dependencies, and the whole thing is MIT-licensed.
The tool separates generic tooling from per-project data. Public capabilities include route jumping, bridge code generation, Flutter utilities, and a declarative analytics adapter, while each project's routes, bridge methods, domains, and interface parameters stay in local JSON imports. Route definitions can even be subscribed from remote JSON/Markdown/HTML docs, merged by URL with a 30-minute auto-check and a guard against stale writes when the user switches projects mid-request.
The first public release is 1.2.0, built from a clean clone via a scripted pipeline that runs config regression checks and produces a universal (Apple Silicon + Intel) app with SHA-256 checksums. It's ad-hoc signed and not notarized, so users must verify checksums and may need to override Gatekeeper.
Separating generic tool capabilities from project-specific data is a clean template for open-sourcing an internal dev tool without leaking business config or hardcoded vendor assumptions.
Re-validating project context after an async network response is a correctness detail many similar tools ignore; without it, stale route merge results would corrupt the wrong project.
The deliberate limitation of the analytics adapter to form POST and field remapping, with no JavaScript execution, keeps the tool predictable and safe, but also walls off any backend with custom encryption or transport.
Shipping ad-hoc signed and un-notarized installers is a real adoption barrier; users must trust checksums and bypass Gatekeeper, which many will not do casually.