Skip to content
Sign In Create account
DigiCode

A code editor
that is actually
a Mac application.

Written in Swift on AppKit — no browser engine, no bundled runtime. It opens instantly, it holds your project, and it runs a PHP site and a MySQL database for you without Docker and without installing anything system-wide.

Universal binary — native on Apple Silicon and on Intel. macOS 13 Ventura or later.

DigiCode with a WordPress project open: the file tree on the left, PHP being edited, and the Server panel below showing the web server and the database both running.
Requires
macOS 13 Ventura or later
Architecture
Universal — Apple Silicon and Intel
Version
1.0.0
Download
6.0 MB

Why another editor

Built like a Mac application, because it is one.

Most editors you can install today are a web browser in a window. This one is not, and you can feel the difference in the first minute.

Native, not a browser in a window

Swift and AppKit, drawing text through TextKit 2 — the same text layer the rest of macOS uses. Nothing is emulated, nothing ships a copy of Chromium, and the whole application downloads in seconds.

Highlighting that parses the code

Tree-sitter builds a real syntax tree rather than matching regular expressions, for Swift, JavaScript, Python, PHP, HTML, CSS and JSON. A string that contains a brace stays a string.

Your Git, not a reimplementation

It drives the git already installed on your machine, so your config, your credentials, your signing keys and your hooks all apply unchanged. Nothing to reconfigure, nothing that behaves differently from the terminal.

Everything reachable from the keyboard

One palette lists all 55 commands and filters as you type — initials are enough. Multiple cursors, project-wide search with regular expressions, and quick open by name.

Local server

A running site and a database, in one click.

No Docker, no MAMP, nothing installed system-wide. Press ⌃⇧S and the project you have open is being served.

The server listens on the loopback interface only, MySQL's root password is random and reachable through the socket alone, and the credential files are readable by you and nobody else.

  1. The web server Serves the open project at 127.0.0.1:8000 through PHP's own server — public/ when the project has one, as Laravel does, and the project root otherwise, as WordPress does. It uses the PHP already on your machine rather than downloading another one.
  2. The database MySQL installs in a click, into the application's own folder, and nothing is placed on the system. Copy the connection details straight into TablePlus or Sequel Ace, or export a dump wherever you like.
  3. It remembers What was running for a project is written down. Reopen the folder and the database and the web server start again on the same port, so the link you bookmarked still answers. A server you stopped stays stopped.

Project Launcher

Ten stacks, a folder each, one click.

Files created, dependencies installed, Git initialised, project opened. It checks which tools each recipe needs and tells you what is missing before it creates anything.

  • WordPress The latest WordPress, ready for its own installer.
  • Laravel An application created by Composer.
  • React On Vite, with fast refresh. TypeScript optional.
  • Vue Vue 3 on Vite. TypeScript optional.
  • Next.js With the app router.
  • Node · Express An HTTP server with a start script.
  • Python A virtual environment and a requirements file.
  • PHP An empty project served by PHP's own server.
  • Static site HTML, CSS and JavaScript. Nothing to install.
  • Empty project A folder, a README and a Git repository.

Or write your own

Drop a YAML or JSON file into the recipes folder and it appears in the list. A step runs an executable and its arguments — never a shell line, so there is nothing to escape — and every path is resolved inside the project folder, so a recipe cannot write outside it.

Day to day

The things you use every hour.

Multiple cursors

Add the next occurrence, take them all, or stack cursors up and down. Every keystroke applies to all of them, and one undo takes back the lot.

Search the whole project

Across the project, the open file, or any folder on disk. Case, whole word, regular expressions, include and exclude patterns — and replace everywhere, with a confirmation that says what is about to change.

Real terminals

zsh by default, started in the project folder, with the colour and key handling a full-screen program like vim or top expects. Several sessions side by side.

Git where you are working

Branch and remote state in the status bar. Stage, commit, switch branch, fetch, pull, push. Click a file to read its diff line by line. The pull is fast-forward only — a diverged history is reported, never merged behind your back.

A file tree that keeps up

Create, rename, move, reveal in Finder. Drag a file and the open tab follows it. A deleted file goes to the Trash rather than being erased.

Find anything by name

Quick open matches files across the project as you type, and the command palette does the same for every command in the application.

For WordPress

It knows what a WordPress site is.

Open one and the editor changes to suit it.

Set up in one strip

A WordPress folder with no wp-config.php gets a Set it up button: the database is created and the file written, with its eight salts drawn at random. All that is left is the installer.

Our plugins, installed from the editor

A Plugins tab appears beside the server. Backup Toolkit, Login Security, Partner for WooCommerce and RePublish AI install into wp-content/plugins in a click, with the installed version on a badge.

The Plugins panel inside DigiCode, listing the four Digipacket WordPress plugins with their versions, sizes and an Install button — and Remove and Reinstall on the one already present.
The Plugins panel, on a WordPress project.

See the plugins

Install

One line, or one drag.

With Homebrew

The recommended way. Homebrew handles the first-launch check for you, and upgrades come with the rest of your casks.

bash
brew install --cask digipacket-net/tap/digicode

Or download the disk image

Drag DigiCode into Applications.

DigiCode-1.0.0.dmg
Version
1.0.0
Size
6.0 MB (6,262,288 bytes)
Published
15 September 2026
SHA-256
e3243cdf5b66e50cc1ddad7f1b28b5d59bd8bcb118427f0247471bd97e46e6a8

Downloaded by hand, it has to be opened the first time with a right click and then Open. DigiCode is signed but not notarised by Apple, and macOS will not open a downloaded application it has never seen. Once only — every launch after that is normal.

Uninstalling

Uninstalling is one command, and a second one removes its data — the database, your recipes and your preferences — without touching your projects.

bash
brew uninstall --cask digicode

# and its data — database, recipes, preferences
brew uninstall --zap --cask digicode

Known limits

What version 1.0 does not do yet.

Stated here rather than discovered after installing.

  • Settings do not persist between launches Theme, font, tab width and the rest return to their defaults every time the application starts. It is the next phase of development.
  • Three panels show sample data Extensions, Problems and Output carry a PREVIEW badge. The extension registry arrives with a published extension format.
  • Not notarised by Apple The application is signed, but Apple has not countersigned it. Homebrew takes care of this; a manual download needs a right click the first time.
  • MySQL rather than MariaDB MariaDB no longer publishes macOS binaries. MySQL Community speaks the same protocol and is what WordPress and Laravel connect to.
  • Key bindings are read-only The settings list every shortcut in force. Changing them is not possible yet.

Questions

Before you download.

Any Mac running macOS 13 Ventura or later. The application is a universal binary, so it runs natively on Apple Silicon and on Intel — there is one download and it is the right one.

No. That is the point of it. The web server is PHP's own, using the PHP already on your machine, and MySQL installs into the application's own folder. Nothing is placed on the system and nothing has to be running before you start.

Because it is signed but not notarised by Apple, which is a paid certificate rather than a security finding. Open it the first time with a right click and then Open, and every launch after that is normal. Installing through Homebrew skips the step entirely.

Swift, JavaScript, Python, PHP, HTML, CSS and JSON, through Tree-sitter — a real parse of the grammar rather than a set of regular expressions. The language is recognised from the file extension and shown in the status bar.

Yes. DigiCode drives the git installed on your machine rather than reimplementing it, so your configuration, credentials, signing keys and hooks all apply unchanged.

Yes. Recipes are YAML or JSON files in the application's recipes folder, and one carrying the same id as a built-in recipe replaces it. A step runs an executable and its arguments rather than a shell line, and every path is resolved inside the project folder.

Everything lives in one folder inside your Library — MySQL and its data, your recipes, and what was running for each project. Deleting that folder returns the application to a fresh state without touching your projects.

One Homebrew command, or drag the application to the Trash. A second command removes its data as well — the database, the recipes and the preferences.

Open a folder and start.

A few seconds to download, and a first project a click after that.

Something not working

Tell us and we will look.

Bugs, ideas and questions about DigiCode all reach the same place.