BRAMPP → Features

Features

Everything BRAMPP manages

A local development stack is a dozen small chores that each take ten minutes and never get faster. This page is the full list of the ones BRAMPP takes over — and, where it matters, how.

Services

Start, stop, and actually know the state

Six services, one list, live status. The part that took the longest to get right is not starting them — it is reporting the truth about them.

ServiceVersionsWhat BRAMPP does with it
Apache httpdHomebrew currentPorts, vhosts, modules, per-domain document roots, graceful reloads
NginxHomebrew currentServer blocks, per-domain SSL, reverse proxies to app servers
PHP-FPM8.1 – 8.5, side by sideA pool per version; a domain picks its own version without touching the others
MariaDB / MySQLHomebrew currentStart/stop, root access, my.cnf editing, dump and restore
PostgreSQLSeveral majorsThe running instance is detected, not guessed — no wrong-port surprises
RedisHomebrew currentStart/stop, redis.conf, and a live stats panel built into the app

Status you can trust

Every status line combines three checks: is the process alive, is the port answering, and does the PID on that port actually belong to the service. That third one matters more than it sounds — a stale PID file or a different process squatting on port 80 is exactly the situation where a naive check says "running" and your browser says otherwise.

Stopping is equally careful: BRAMPP verifies port ownership before it signals anything, so it will never kill a process that merely looks like yours. If a service dies on its own, you get a notification instead of finding out from a failed request.

Dependencies are resolved for you. Starting a Node, Python or .NET domain also starts the web server in front of it — and if that server is Nginx running a domain with an Apache companion, that gets started too. Services that are not installed are reported as such rather than silently failing.

Domains

A working site in one dialog

Name it, pick a platform, done. Behind that single step BRAMPP writes a virtual host, adds the /etc/hosts entry, creates the site folder, generates a starter project and issues an SSL certificate.

PHP

Pick the PHP version per domain. A legacy project stays on 8.1 while the new one runs 8.4, and neither knows the other exists.

Node.js

Express, Next.js or anything that listens on a port. BRAMPP puts a reverse proxy in front and supervises the process.

Python

FastAPI, Django and Flask templates, each with its own virtual environment created at domain-creation time.

ASP.NET Core

Kestrel behind Apache or Nginx, with the proxy headers set correctly so the app sees the real scheme and host.

Static & SPA

Plain static sites, or single-page apps with history-mode fallback so deep links resolve instead of 404ing.

Apache or Nginx, per domain

Not a global setting. One project on Apache, the next on Nginx, both running at once — see the guide on running them together.

HTTPS

The padlock, locally, without the yellow warnings

A self-signed certificate is rejected no matter how carefully you configure the server. BRAMPP takes the other route: a local certificate authority.

One click sets up mkcert, installs its CA into the macOS system trust store — that is the single password prompt you will see — and issues a certificate for each domain you create. Browsers then trust those certificates the way they trust a public one, because the authority that signed them is genuinely trusted on your machine.

Each domain also gets an HTTP→HTTPS redirect, so http://myproject.test lands on the secure address rather than serving a second, subtly different version of your site. The full story — including why .local is a trap on macOS and what to use instead — is in the local HTTPS guide.

Databases

Create, dump, restore — without the CLI

And when you do want the CLI, BRAMPP uses the same tools you would: mysqldump, mysql, pg_dump. The files it produces are ordinary dumps that restore anywhere.

  • Create and drop databases on MariaDB/MySQL and PostgreSQL, with name validation at the boundary.
  • Export with mysqldump --single-transaction --routines --triggers — a consistent snapshot that does not lock InnoDB tables, keeping stored routines and triggers.
  • Import a .sql file into a target database, creating it first if it does not exist.
  • A partial dump is never left behind. If an export fails the incomplete file is deleted — a corrupt backup is worse than no backup, because you only discover it when you need it.
  • Web clients — phpMyAdmin and Adminer install from inside the app if you want them.
  • Config editors for my.cnf, postgresql.conf and redis.conf, with a backup written before every save.

Redis, with numbers

The Redis tab reads INFO and shows uptime, connected clients, memory used against peak, total commands, the keyspace hit rate, and the key count for each database. When nothing has been requested yet it says so rather than reporting a misleading "0% hit rate" — 0 hits out of 0 lookups is not a cache miss, it is an absence of data.

Recently added

A few more reasons to stay out of the terminal

A development environment manager earns its place by not sending you to a shell. These are jobs BRAMPP used to do half of, leaving you the rest.

Put a running site on a temporary address

One click gives you an https://…trycloudflare.com link — to show a client, or to open the site on your phone. No Cloudflare account. If nothing is running behind it the share is refused: a link that serves visitors a 502 is worse than no link at all. Delete the domain and the share closes with it.

Update and restart

No opening the image and dragging. The new version is copied next to the app while it is still running, so after quitting only two renames remain and the moment where no application exists is measured in milliseconds. The old version is not deleted but moved aside — removed once the new one has launched and stayed alive, put back if it has not. Your Homebrew services keep running, and no administrator password is ever asked for.

Homebrew packages, with the noise separated

brew outdated counts every formula on the machine — fifty on a typical developer's, where httpd and php are lost between cocoapods and jadx. Its own tab splits them three ways: what BRAMPP manages, what those depend on, and everything else it does not touch. Select what you want and upgrade that; a running service that was upgraded is restarted, because an upgrade replaces the binary while the running process keeps the old one.

Environment diagnostics — and repair

Ports, configuration validity, certificate trust and /etc/hosts on one screen. If an unexpected process holds a port, it names the process and the PID. When it recognises a fault it offers to repair it: back up the file, run configtest, restore from the backup if that fails — no work touching shared configuration should happen without all three.

Tooling

The rest of it

PHP extension manager

26 curated extensions per PHP version — 17 built into PHP, the other 9 installed through PECL — xdebug, redis, imagick and the rest, toggled with one click. Plus quick settings for the values in php.ini you actually change.

App server supervisor

Node, Python and .NET apps run under a zero-dependency supervisor: automatic restart on crash, combined logs, and a stop that checks port ownership before signalling.

Setup wizard

Apache ports, PHP-FPM, the mkcert CA, localhost SSL, MariaDB root access and phpMyAdmin — configured in order, installing only what you approve, printing every command it runs to the console.

Logs in the app

Apache, Nginx, PHP-FPM and per-domain access and error logs, readable without hunting through /opt/homebrew/var/log.

Honest backups

One click backs up domains, settings, vhosts, SSL certificates and php.ini files. Incomplete backups are detected and flagged — never silently restored as though they were whole.

Menu bar

The stack in your menu bar: start and stop services, open the main window, launch at login, crash notifications. Turkish and English, switchable while running.

MCP server

A local Model Context Protocol endpoint with 23 tools behind per-area permissions, off by default. Details on the MCP page.

Share a site, temporarily

One click opens a Cloudflare Quick Tunnel and hands you a public trycloudflare.com address — for showing a client, or for opening the site on your phone. No Cloudflare account. The sheet says plainly what becomes public before you start, and every tunnel closes when BRAMPP quits.

PHP profiler

Drives Xdebug's profile mode without editing php.ini by hand, collects the cachegrind output in one folder and lists it. Trigger mode is the default — profiling every request costs hundreds of megabytes in minutes and a visibly slower site, so only requests you mark get measured.

Update check

BRAMPP asks GitHub whether a newer release exists and tells you. It does not install anything behind your back.

Native arm64, end to end

The app is a native Apple Silicon binary on macOS 14+, and so is everything it manages — httpd, php-fpm, mariadbd and redis-server all come from Homebrew's arm64 bottles. No Rosetta, no emulation layer, at any level.

NextInstall BRAMPP → AlsoHow it compares →