janalis / porta
A terminal IDE for PHP projects, built on symfony/tui with LSP support, syntax highlighting and autocompletion
Requires
- php: >=8.5 <9
- ext-ctype: *
- ext-mbstring: *
- ext-pcntl: *
- composer/semver: ^3.4
- janalis/viz: ^0.2
- revolt/event-loop: ^1.0
- symfony/clock: ^8.2
- symfony/config: ^8.2
- symfony/console: ^8.2
- symfony/dependency-injection: ^8.2
- symfony/event-dispatcher: ^8.2
- symfony/filesystem: ^8.2
- symfony/finder: ^8.2
- symfony/polyfill-intl-grapheme: ^1.33
- symfony/process: ^8.2
- symfony/translation: ^8.2
- symfony/tui: ^8.2
- symfony/yaml: ^8.2
- tempest/highlight: ^2.16
Requires (Dev)
- ext-simplexml: *
- brianium/paratest: ^7.23
- carthage-software/mago: 1.59.*
- infection/infection: ^0.35.4
- janalis/custos: ^0.1.7
- phpunit/php-invoker: ^7.0
- phpunit/phpunit: ^13.2
- rector/rector: ^2.6
- systemsdk/phpcpd: ^9.1
Suggests
- ext-gd: Lets the bundled image-viewer (and graph-viewer) plugins decode images
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-11-03 03:38:31 UTC
README
Porta
A terminal IDE for PHP.
LSP · debugger · git · live collaboration · agents · plugins
Documentation · Getting started · Keybindings · Plugins · Writing a plugin
Porta is an IDE that runs in your terminal, written in PHP for PHP projects, on the symfony/tui component. The editor, the language servers, the debugger and every subprocess share one non-blocking event loop, so typing never waits on a server.
- Code intelligence from any LSP server — completion with auto-imports, diagnostics, go to definition, references, rename, code actions, inlay hints — with PHPantom, Phpactor and the Symfony language server set up for you, and PHPStan, Psalm, Mago, PHP CS Fixer and custos beside them.
- An editor with multiple carets, structural selection, live templates, folding, soft wrap, and a live preview for Markdown, SVG and diagrams.
- Git in a view after GitHub Desktop: staging by line, history, worktrees, a three-way merge view, and Porta as git's difftool and mergetool. Pull and merge request threads in the editor.
- A debugger (DAP: Xdebug and more), an integrated terminal and run configurations.
- Work together: share a project live with others (Assist), or open one on a server over SSH or FTP.
- Agents: an MCP server inside the IDE lets Claude Code and other agents read your buffers, propose edits you accept or reject, and run your tests.
- Plugins in PHP, with a public API; the features above are plugins too.
The UI speaks English, French, German, Spanish, Italian, Japanese and Hebrew (mirrored right-to-left).
Install
Porta needs PHP ≥ 8.5.
brew install janalis/tap/porta # macOS / Linux composer global require janalis/porta # with minimum-stability dev, see below
Or download porta.phar from the
releases page; porta --self-update keeps it current. See
Getting started for
Composer's stability settings, a language server, and building from source.
Quick start
porta # open the project in the current directory porta src/Kernel.php:42 # open a file at a line porta --diff a.php b.php # compare two files
Press F1 inside the IDE for the documentation, rendered in place.
Plugins
Every bundled plugin is also its own package, janalis/porta-<name>, from a
read-only split of plugins/. Install yours from Settings →
Plugins by Packagist name, git URL or local path; see
Writing a plugin.
Contributing
Bug reports and pull requests are welcome — against this repository, never
a plugin's split. Read the
contributor guide first: composer verify (or
make verify) is the definition of done, and it holds every change to
100% line coverage.
make install # composer install + the docs site's packages make check # every quick gate make verify # the quick gates + 100% coverage of src/ and plugins make docs-dev # the documentation site, live
License
MIT.
