Skip to content

Install on macOS

INSTALL · MACOS

Install Spent on your Mac.

Three commands, about ten minutes. Spent will install itself as a background service and put a small icon in your menu bar.

  • macOS 12 (Monterey) or newer.
  • About 500 MB of disk space.
  • Your bank login credentials (have them ready).
  1. Install Node.js

    Spent runs on Node.js, a small runtime you install once. Go to nodejs.org, download the LTS installer for macOS, and run it. Click through the defaults.

    If you prefer Homebrew:

    Terminal window
    brew install node@20
  2. Get Spent

    Open Terminal (in Applications → Utilities) and clone the repo:

    Terminal window
    git clone https://github.com/Shaya16/Spent.git ~/Spent
    cd ~/Spent

    No Git? Install it first with brew install git (after installing Homebrew), then run the clone above.

  3. Install and run setup

    Terminal window
    npm install
    npm run setup

    npm install takes 2-3 minutes the first time. npm run setup does everything else: builds the app, installs the background service, builds the menubar, registers everything to start at login, and opens the dashboard.

What `npm run setup` actually does

In order:

  1. Builds the Next.js app (npm run build).
  2. Adds 127.0.0.1 spent.local to /etc/hosts so you can reach the dashboard at http://spent.local:41234. Asks for sudo once.
  3. Registers a LaunchAgent at ~/Library/LaunchAgents/io.spent.app.plist that starts the server on login. Server binds to 127.0.0.1:41234 only.
  4. Builds Spent.app from menubar/mac/ (Swift). Needs Xcode Command Line Tools (offered for install if missing).
  5. Copies Spent.app to ~/Applications/ and registers it as a Login Item so the menubar shows up after reboot.
  6. Polls /api/health until the server is ready, then opens the browser.

Source: scripts/setup.mjs.

The first time you click the menubar icon, macOS Gatekeeper will balk:

Once installed, you mostly forget the terminal. But these are useful:

Terminal window
npm run service:status # is the background service running?
npm run service:start # start it
npm run service:stop # stop it
npm run service:reload # rebuild + restart (after a code change)
npm run service:logs # tail the server logs
npm run service:open # open the dashboard in the browser

To remove the service, hosts entry, menubar, and login item:

Terminal window
npm run uninstall

Your data/ folder is left alone so you can reinstall later.

Next Connect your bank