Laradebug

Docs

How to set Laradebug up, and what to check when something does not work.

Laradebug is in private beta and not publicly downloadable yet.

On this page

Requirements#

  • A Mac, Apple silicon or Intel.
  • A Laravel project on your Mac with composer install already run. Laradebug looks for artisan, composer.json, vendor/ and the laravel/tinker package.
  • PHP on your Mac, unless you only run code in Docker or over SSH.

The project folder has to be on your Mac even if you run the code in a container or on a server.

Install and update#

Open the DMG and drag Laradebug to Applications.

Laradebug checks for updates when it starts. If there is one, a window offers Download Now and then Restart & Update. To check yourself: Preferences → Editor → Check for Updates.

To remove everything, delete the app and then its data folder. That folder holds your settings, project list, snippets and saved API keys.

Terminal
$ rm -rf ~/Library/Application\ Support/laradebug

Add a project and run code#

Press Cmd+O and pick your project folder. Type PHP in the editor and press Cmd+Enter or Cmd+R.

  • It is your real app. Queries change real data.
  • Every run starts fresh. A variable from the last run is gone in the next one. Keep everything a run needs in the editor.
  • You do not need dump(). Each statement's result is shown as a numbered block. This stops as soon as your code contains echo, print, dump(), dd() or ray() anywhere, even in a comment. From then on you only see what you print yourself.
  • A run stops after 30 seconds. Change this under Preferences → Debugger → Execution timeout, from 5 to 120 seconds.
  • The history button keeps the last 5 successful runs per project.

The badge in the toolbar shows APP_ENV from your .env. It only turns red for production.

The dots in the title bar show whether Nginx, your database, queue worker and cache respond. They are checked when you open a project. Click the refresh icon to check again.

PHP not found#

Laradebug looks for PHP once, when it starts: first the php from your login shell, then Herd, Homebrew, MAMP and /usr/bin/php.

  • Installed PHP while Laradebug was open? Restart Laradebug.
  • Wrong version, or still not found? Click the sliders button next to the project name, choose Local, and pick a version under PHP version or enter a path.

Docker and Sail#

Click the sliders button next to the project name. You can run code with Local PHP, Sail, Compose or a plain Docker container.

  • Sail is only offered when Docker is installed and the project has vendor/bin/sail and a compose file.
  • Compose assumes service app, PHP at php and working directory /var/www/html. Change them if yours differ.
  • Docker needs the container name.
  • Use Test Connection before you save.

Things that still use PHP on your Mac, whatever mode you pick:

  • Logs.
  • Autocompletion.

The DB Host and DB Port fields under Preferences → Environment only apply to PHP on your Mac. They are not passed into a container.

Remote servers (SSH)#

In the toolbar, open Local and choose Configure remote. Fill in the host, the user and the project path on the server.

  • Login is by SSH agent or key file. Passwords are not supported.
  • Import from SSH config lists the hosts in ~/.ssh/config.
  • Remotes are saved per project, so you still need that project on your Mac.

When you pick a remote, Laradebug asks you to confirm once. After that every run goes to the server until you switch back, and the Run button is orange. The badge shows the environment you chose for that remote, not the server's APP_ENV. Laradebug always starts on Local.

Works on a remote: running code, SQL and HTTP capture, logs, the database, the status dots.

Does not apply on a remote: Docker and Sail modes, the PHP version picker, the DB Host and DB Port fields. Autocompletion reads your local files.

SQL and HTTP capture#

The Capture button above the editor has four switches: SQL Queries, HTTP Requests, Debugger and Laravel Logs.

SQL:

  • You see the queries of the last run on your default connection, with bindings and time.
  • Green is under 10 ms, amber under 100 ms, red is slower.
  • If the run fails, times out or hits dd(), no queries are shown.

HTTP:

  • Only requests made with Laravel's HTTP client (Http::) are captured. Requests sent with Guzzle or curl directly are not.

Both lists are cleared on every run.

Logs#

Logs come from Laravel Pail:

Terminal
$ composer require laravel/pail --dev
  • Logs are collected while a run is in progress, not all the time.
  • If the Logs panel stays empty, check that Pail is installed.
  • Pail is started with PHP on your Mac, also in Sail and Docker mode.
  • Over SSH, storage/pail must exist on the server and be writable by your SSH user.
  • Logs pile up across runs. Turn on Auto-clear to start clean each time.

Database#

The Database button above the editor opens your tables. It uses your project's own connection, so it works locally, in Docker and over SSH.

  • Supported: MySQL, PostgreSQL (public schema) and SQLite.
  • Double-click a cell to edit it. Nothing is saved until you press Commit (Cmd+S). Discard drops your changes.
  • A commit saves everything or nothing.
  • Tables without a primary key are read-only.
  • Switching to another table drops unsaved changes without asking.
  • Raw SQL runs what you type, including UPDATE and DELETE, without asking and without a row limit.
  • There is no extra protection on production. Check the badge first.

A page shows 25 rows. You can raise that to 1000.

AI assistant#

Set it up under Preferences → AI. It is off until you do.

Provider Needs
Anthropic, OpenAI, Google Gemini An API key
Ollama Ollama running on your Mac
Claude Code The claude command installed and logged in
  • Keys are stored encrypted on your Mac. If you rename your Mac or your user, enter them again.
  • The assistant can read project files and list folders. It will not read .env, key files, or any path that contains "secret", "password" or "credential".
  • It can suggest code to run. Nothing runs until you click Run Code.
  • Apply to a file overwrites that file without asking.
  • Ollama can only chat. It cannot read files or run code.
  • Claude Code uses its own tools and rules, so the limits above do not apply to it. The first time, macOS asks for access to some folders. You can skip that.
  • Suggestions while you type are a separate switch under Preferences → AI. They are off by default.

Files and snippets#

  • Click a file in the sidebar to edit it. Cmd+S saves.
  • Files over 5 MB and binary files are not opened.
  • Delete removes the file for good. It does not go to the Trash.
  • Unsaved edits are lost when you switch project.
  • Snippets are shared by all projects. Clicking one adds it to the end of the editor.
  • Deleting a snippet folder deletes the snippets in it.

Shortcuts#

Keys What it does
Cmd+Enter or Cmd+R Run
Cmd+K Command palette
Ctrl+L Clear output
Ctrl+Shift+L Clear all panels
Cmd+O Add a project
Cmd+P Switch project
Cmd+B Show or hide the sidebar
Cmd+Shift+F Find a file by name
Cmd+Shift+S Search snippets
Cmd+S Save the open file
Cmd+W Close the file tab
Cmd+E Go to the editor
Cmd+Shift+O Go to the output
Cmd+J Show or hide the assistant
Cmd+Shift+D Show or hide the database drawer
Cmd+T Find a table
Cmd+Shift+T New SQL tab
Cmd+Shift+A Auto layout
Cmd+/ Comment a line
Cmd+, Preferences
Cmd+I Shortcut list
Cmd+Shift+L Bring Laradebug to the front, from any app

Troubleshooting#

"Invalid Laravel project"

Run composer install in the project. If it names laravel/tinker, run composer require laravel/tinker.

Run does nothing

The project path contains a character such as $, (, ; or a backtick. Rename or move the folder and add it again.

"Execution timeout (30s)"

Raise the timeout under Preferences → Debugger.

"Too many concurrent executions"

Five runs are going at once. Cancel one.

"Rate limit exceeded"

More than 30 runs in a minute. Wait a moment.

Laradebug is still running after I closed the window

Closing the window does not quit. Use the menu bar icon and choose Quit.