# CellDock: cellular, SMS and calls on a Mac through a QDC507 module

> CellDock is a native macOS menu bar app for the QDC507 cellular module. It brings SMS, voice calls, eSIM profile management and a per-module SOCKS5 proxy to the desktop, at the cost of hardware compatibility and a licence file that needs reading.

**celldock/celldock-for-mac** — Use cellular network, SMS, and calls on your Mac.

- Repository: https://github.com/celldock/celldock-for-mac
- Stars: 745 · Forks: 150
- Language: Swift
- License: NOASSERTION
- Published: 2026-09-17 · Updated: 2026-09-17 · Language: en
- Canonical page: https://hysenlabs.com/projects/celldock-celldock-for-mac

## What CellDock solves, and for whom

macOS has no general story for attaching a cellular modem and using it as a phone. Messages and calls normally arrive through Continuity from an iPhone, which means owning an iPhone and keeping it nearby. CellDock takes a different route: it talks to a QDC507 cellular module over USB and presents the results as a menu bar app. The README describes it as a native macOS menu bar app that works with the QDC507 cellular module, and the pitch is that you plug in the module and use the cellular network directly on your Mac, with no browser-based service or extra communication software.

The audience is narrow and specific. It is people who already have a QDC507 module, or are willing to buy one, and want SMS threads, voice calls, call recording, SIM and eUICC inspection, or a cellular egress they can hand to a single application. A second group is developers and testers who need to route traffic out through a specific cellular link and want that link selectable per app rather than system-wide. The app is written in Swift and the repository is organised as a Swift package, with Sources/, Tests/, Package.swift and Package.resolved at the top level.

It is not a way to make a Mac into a phone without hardware. Every feature in the README depends on the module being present and recognised.

## The module, the ECM link and the network switch

The mechanism the README describes is a USB cellular module that exposes an ECM link to macOS. CellDock discovers and monitors multiple supported modules at once, and each module can be set to Cellular First, Keep Connected, or Off. The distinction matters: a module in Keep Connected stays usable by bound SOCKS5 proxies but is not used as the Mac's default network egress. Only one module serves as the cellular-first egress at a time.

Enabling the cellular switch gives cellular priority over Wi-Fi, and disabling it restores the previous network order without affecting SMS or incoming calls. That separation is the design decision worth noting. The data path and the messaging path are managed independently, so you can keep receiving SMS and calls while the Mac still routes its general traffic over Wi-Fi. Each module remembers its switch state, so reconnecting a module restores the previous choice rather than resetting to a default.

The README also mentions bounded automatic recovery when the ECM link, DHCP, or a module restart misbehaves, and a live display of carrier, network mode, signal strength, IP address and connection stage. The word bounded is doing real work there: it implies a retry policy with a limit rather than an indefinite loop, but the README does not state the number of attempts or the backoff. If you are deploying this unattended, that is a gap you would want to resolve from the source.

## Installing CellDock and sending a first SMS

The repository does not document a Homebrew cask or a download page, and there is no homepage field. What the material does show is a Swift package layout with Package.swift, Package.resolved, Sources/ and Tests/, and a script/ and scripts/ directory alongside a module/ and tools/ directory. The README also refers to built-in stable and beta update channels with automatic or manual update checks, which implies a distributed app bundle rather than a source-only build.

The README gives no install command and no build command. It says the app works with the QDC507 cellular module and that you plug the module in. Because the repository is laid out as a Swift package with a Package.swift manifest, building from source is a possibility, but the README does not document the steps, the resulting binary, or an app bundle assembly script. Check script/ and scripts/ in the repository for whatever packaging the project uses before assuming a source build produces a double-clickable .app.

Once the app is running, the workflow the README describes starts with the module. Plug it in; the app supports hot-plug, so a restart is not required. Open the menu bar panel and confirm the module appears with carrier, network mode, signal strength and connection stage. Then check the cellular switch for that module, which the README lists as Cellular First, Keep Connected, or Off. Leave it Off if you only want SMS and calls, since incoming messages and calls are unaffected by the network order change. To send a message, open the SMS view, compose, and pick which available module sends it when more than one is attached. Verification codes are detected automatically and can be copied with a click, and the README notes an option to auto-delete verification-code messages 30 minutes after they are read.

## The SOCKS5 proxy is the most consequential feature

Each module can expose its own SOCKS5 proxy, so an application or a LAN device can select a specific cellular egress rather than accepting the system default. Listeners can bind to localhost only or to the LAN, ports are auto-assigned starting from 1080 and can be changed, and both no-auth and username/password authentication are supported. LAN listeners require authentication, and auth passwords are stored in the macOS Keychain.

The README is explicit about the risk: a LAN proxy exposes the cellular egress to other devices on the same network, and it advises a strong password plus a trustworthy firewall and network. That is the correct warning to print, and it is also the reason to think before enabling a LAN listener on a shared network. Localhost-only is the safer default for most desktop use.

The operational detail that stands out is rebinding. Proxies bind to a stable module identity and re-resolve the network interface after the module is reinserted, and each proxy reports status such as module offline, cellular off, link down, or port in use. Those four states are the failure modes you will actually hit: the module unplugged, the cellular switch turned off, the ECM link dropped, or a port collision. Reporting them per proxy is more useful than a single global error, because with several modules attached the cause is rarely obvious.

## Calls, recording and the consent problem

Voice support covers dial, answer, reject, mute and hang up, with an in-call keypad for automated menus, and it uses the Mac's microphone and speakers. Incoming calls raise a notification and a floating window with Answer and Decline. Recent and missed calls are kept with a note of which module handled them.

Recording is manual or user-confirmed automatic, captures both parties, and saves as M4A. The library offers waveforms, playback, seeking, speed control, volume, rename, export and Reveal in Finder. The README attaches a warning before describing any of this: get consent from all participants and follow local laws. That warning is not decorative. Recording a call without consent is illegal in a number of jurisdictions, and an app that makes recording a one-click affair shifts the compliance burden onto the person clicking.

There is a second, quieter limitation in the SIM section. CellDock can configure per module whether it accepts incoming calls, and the README says operations that require a module restart are clearly flagged. A restart means the module drops off the network briefly. For a data proxy that is a nuisance; for an active call it is a termination. The README does not say whether the app blocks a restart during a call, so treat that as something to confirm before relying on it.

## eSIM management, contacts and the macOS Contacts dependency

CellDock auto-detects physical SIM and eUICC, and on supported eUICCs it can show the EID and profiles and download, enable, disable, rename or delete eSIM profiles. The qualifier on supported eUICCs is doing a lot of work. eUICC behaviour varies by module firmware, and the README does not enumerate which eUICCs are known to work, so profile management is the feature most likely to disappoint on a module that otherwise behaves.

The SIM view also shows ICCID, IMSI, own number, carrier, network mode and signal information. For contacts, CellDock reads the macOS Contacts database to match names on SMS and calls, and it can create, edit and delete contacts and manage contact groups inside the app.

That is a real coupling. Name matching on messages and calls depends on the system contacts store, so a Mac with an empty or restricted Contacts database will show raw numbers. It also means CellDock is reading a database that other applications write to. The README does not describe how conflicts are resolved if the same contact is edited in both places, which is worth knowing before you make CellDock your primary contact editor.

## Licence, maintenance and what an upgrade costs you

The repository states a licence of NOASSERTION, and the README ends with a disclaimer rather than licence terms. The disclaimer says CellDock is provided as is, without any express or implied warranty, and that the author makes no guarantees about suitability or performance for any particular purpose. It also notes that the app modifies macOS network configuration. That combination is the practical issue: the app changes system network order, stores proxy and forwarding secrets in the Keychain, and ships under a licence identifier that GitHub could not classify. Read the LICENSE file in the repository before you deploy this on a managed machine, and decide for yourself whether the terms fit your use. This is not legal advice, and the licence text is the only authority.

The maintenance picture is current but not long. The last push was on 2026-09-06, and releases 0.3.0 and 0.3.1 landed on 2026-08-09 and 2026-09-06 respectively. A 0.3.x line that is still moving means interfaces and behaviour can change between minor versions. The README describes built-in stable and beta update channels with automatic or manual update checks, so an installed copy can move forward without you watching. If you pin a version for a fleet, that auto-update behaviour is something to disable deliberately rather than discover.

Upgrade cost is concentrated in three places: the module firmware, the macOS network configuration the app rewrites, and the Keychain entries for proxy and SMS-forwarding credentials. The README does not document rollback, so there is no stated procedure for reverting a network-order change if an upgrade goes wrong.

## Conclusion

Adopt CellDock if you already own a QDC507 module and want SMS, voice and a per-module SOCKS5 egress inside macOS without a browser service. Do not adopt it if you need a different modem, a Linux or Windows client, or a clearly stated open source licence, since the repository carries NOASSERTION and the README only points to LICENSE. Verify first that your module enumerates as a supported USB device and that the ECM link comes up, because the module is the hard prerequisite, not the app.

## FAQ

### What hardware does CellDock require?

CellDock works with the QDC507 cellular module, which the README describes as the module the app is built around. Every feature, including SMS, calls and the SOCKS5 proxy, depends on that module being plugged in and recognised.

### Can CellDock send SMS and make calls while my Mac stays on Wi-Fi?

Yes. The README states that disabling the cellular switch restores the previous network order without affecting SMS or incoming calls, and that a module set to Keep Connected remains usable by bound SOCKS5 proxies without serving as the default egress.

### Is the CellDock SOCKS5 proxy safe to expose on my LAN?

The README warns that a LAN proxy exposes the cellular egress to other devices on the same network and advises a strong password plus a trustworthy firewall and network. LAN listeners require authentication, and auth passwords are stored in the macOS Keychain.

### What licence does CellDock use?

The repository reports a licence of NOASSERTION, and the README carries a disclaimer that the software is provided as is without express or implied warranty. The LICENSE file in the repository is the only authority on terms.

## Sources

- [celldock/celldock-for-mac on GitHub](https://github.com/celldock/celldock-for-mac)
- [Issues](https://github.com/celldock/celldock-for-mac/issues)
- [README](https://github.com/celldock/celldock-for-mac/blob/main/README.md)
- [Releases](https://github.com/celldock/celldock-for-mac/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/celldock-celldock-for-mac
