DEV Community

Cover image for You don't notice the quiet apps until they're gone
Amir Reza Dalir
Amir Reza Dalir

Posted on

You don't notice the quiet apps until they're gone

🔥 Macxelio is free and open source → github.com/dalirnet/macxelio

This is a short story about an app I lost, and the new one I built to replace it.

For many years, ClashX was part of my Mac. It lived in the menu bar and just worked. I never had to think about it. New laptop? I installed ClashX and moved on. The best apps are the ones you forget are even there.

Then it was gone.

In late 2023, ClashX and the whole Clash project were removed from GitHub. One day the code was there. The next day, it was not. Version 1.17.0 became the final version, and no more updates would ever come.

So I was stuck with an old, frozen app.

Stuck for too long

Here is the part I am a little embarrassed about: I kept using it anyway, long after I should have stopped. The same old, abandoned app, every day.

Why? Because every other app I tried felt wrong. Some were not really made for macOS. Some were big and heavy, full of features I never used. Some were just not nice to use. None of them felt like the small, quiet menu bar app I had lost.

I kept hoping a better one would show up. It never did.

So I built my own

In the end, "I wish this existed" became "okay, I will build it myself."

do it myself

I knew what I wanted, because I had missed it for so long:

  • Native. A real macOS app, in the menu bar, light enough to forget.
  • Modern. Built on Xray-core, so newer protocols like VLESS are supported.
  • Simple. Not the app with the most features — the app that does what I need and stays out of the way.

I named it MacxelioMac + Xray + I/O.

It lives in the menu bar

My main rule was simple: you should not need to open a window. A proxy app is something you use many times a day but rarely look at.

So the menu bar is the app. You click the small flame icon and everything is there:

  • Switch to a different server.
  • Change the mode (Global, Rule, or Direct).
  • Turn the system proxy or DNS on and off.

Each line shows its current state, so you can read it at a glance. The active server even shows its speed (how fast it responds) right in the menu. You only open the main window for the things you do once in a while — adding servers, writing rules — not for daily use.

It supports the common protocols too: Shadowsocks, VLESS, VMess, Trojan, SOCKS, and HTTP.

Three ways to send your traffic

A proxy is more useful when you can choose what goes through it. Macxelio has three modes:

  • Global — send everything through the proxy.
  • Rule — send only the traffic that matches your rules; the rest goes out normally.
  • Direct — send nothing through the proxy, but keep it ready for later.

Most of the time I stay in Rule mode, because it gives me control without thinking about it.

Rules: decide what goes where

In Rule mode, you write simple rules. Each rule looks at some traffic and decides what to do with it.

You can match by:

  • Domain — like github.com
  • IP — like 10.0.0.0/8
  • GeoIP — a country, like ir
  • GeoSite — a known group, like google or category-ads-all

And you choose what happens to it: send it through the Proxy, let it go Direct, or Block it.

For example: send the sites you need through the proxy, keep local and banking traffic direct, and block ad domains. Rules run from top to bottom, so the more specific ones go first.

It works for your whole Mac

Most tools only fix your browser. Macxelio can set the macOS system proxy and DNS for you, so every app benefits — not just one.

You can also set your own DNS servers and add host mappings (point a name to an address, like nas.home192.168.1.20).

One honest note: turning on system-wide DNS asks for your Mac password. That is because it installs a tiny helper to apply DNS for the whole system, and it removes that helper again when you turn it off. The password goes to macOS, not to the app.

Proxy for your developer tools

This is the part I did not expect to love.

Many command-line tools do not follow the system proxy at all — npm, pip, git, Docker, your shell. The old way was to edit files like ~/.npmrc and ~/.gitconfig by hand, and then remember to undo them later. I always forgot.

So Macxelio has an Environments screen. It finds the tools you have installed and sets the proxy for each one for you:

  • Package managers: npm, pnpm, yarn, pip, conda, cargo, gem
  • Version control: git
  • Downloaders: curl, wget
  • Containers: docker
  • Shell: your ~/.zshrc

Turn a tool on, and it writes the setting. Turn it off, and it cleans up after itself. This started as a small thing for me, and now I use it more than anything else.

You can see that it is working

Macxelio checks the active server on a timer and shows a clear status: connected (with its speed), slow, error, or not connected. When the connection stays healthy, it checks less often, so it is not busy for no reason.

There is also a Connections view. It shows your live traffic in real time — what is connected, and whether each one went through the proxy, went direct, or was blocked.

Made to stay simple

Because I had been let down by an app that disappeared, I tried to keep this one calm and plain:

  • Written in plain Swift. It is a small native app, not a big framework.
  • No accounts, no tracking. Your settings are just a JSON file on your disk.
  • It downloads Xray-core on first launch, so there is nothing else to install.

Try it

Download the latest release, unzip it, and move Macxelio.app to your Applications folder. The first time you open it, right-click the app and choose Open (it is not notarized yet). If macOS still blocks it, allow it under System Settings → Privacy & Security.

Or build it yourself:

git clone https://github.com/dalirnet/macxelio.git
cd macxelio
make run
Enter fullscreen mode Exit fullscreen mode

It needs macOS 13 or later, it is MIT licensed, and it is open source. A ⭐ on GitHub helps other people find it:

👉 https://github.com/dalirnet/macxelio

I built it for myself, the way I always wanted it. Maybe it is what you have been waiting for too.

Top comments (0)