Skip to content

Porta documentation ​

Porta is a terminal IDE for PHP projects built on symfony/tui, with an LSP client, a DAP debugger, git integration and a plugin system — all on a single non-blocking event loop.

Porta: the project tree, a PHP file in the editor, the status bar

Using Porta ​

GuideContents
Getting startedInstallation, LSP setup, launching, first steps
EditorBuffers, editing, multi-caret, folding, indentation, live preview, mouse
KeybindingsEvery default binding, and how to rebind
Search & navigationGo to file/symbol/test, find in file, Find in Files, problems panel
Run & terminalRun configurations, the integrated terminal
DebuggerDAP adapters, breakpoints, stepping, the debug panel
Configuration.porta.json, the Settings view, .editorconfig, the .porta/ state directory
PluginsInstalling/removing plugins, writing your own, the PluginApi reference

Bundled plugins ​

Porta ships these plugins, each documented in its own directory — and so can yours (Documenting your plugin). A plugin's guide also opens from its page under Settings → Plugins.

PluginContents
GitGutter markers, palette operations, the Git view (staging, commits, history), difftool and mergetool
DiffThe diff pane git and review show changes in, and the model behind it
Code reviewPull and merge request threads, and local reviews from an agent — in a view, in the diff and in the editor
AssistWork on one project together, live: share it, let others in, edit the same files at once, follow each other
Agents (MCP)Let an agent such as Claude Code read your buffers and diagnostics, open files and make undoable edits in the running IDE
SSHOpen a project that lives on a server over ssh: browse, edit, save
FTPOpen a project on an FTP or FTPS server: browse, edit, save
Local historyA snapshot on every save, independent of git: compare, restore, recover deleted files
Image viewerImages and SVG drawings as pictures — zoom, pan, pixel-exact where the terminal allows
Graph viewerGraphviz and PlantUML diagrams drawn beside their source, the project's architecture graph
TODOEvery TODO and FIXME in the project, in a panel
PHPantomThe suggested PHP language server, and its fixer
PhpactorPhpactor as the PHP language server instead
Symfony language serverTwig, YAML, XML, JSON and dotenv intelligence, installed and updated for you
custosPHP inspections and quick-fixes beside your language server, and Fix File
PHPStanAnalyse the current file, or every file on save
PsalmAnalyse the current file, or every file on save
MagoFormat and lint, on demand or on save
PHP CS FixerFix the current file, or every file on save
TempestThe built-in syntax highlighting engine
ChromaHighlighting for the languages the built-in engine has no grammar for

Language support ​

The UI is translated into English, French, German, Spanish, Italian, Japanese and Hebrew. Hebrew mirrors the layout — the file tree moves to the right — and reorders each pane's chrome right-to-left.

Code stays left-to-right, which is the point: the editor, the git diff, the terminal, the search results and the debug panel are verbatim, as are the Find-in-Files and go-to-file dialogs, which carry paths and code. Those surfaces' own headings stay left-to-right with them. Hebrew inside a document is not reordered either — the editor shows it in logical order and leaves shaping to your terminal.

Switch under Settings → Interface → Language.

Contributing ​

GuideContents
ArchitectureEvent loop, DI composition root, rendering, subsystems, tests and quality gates
EventsThe event bus: facts vs commands, listener priority, adding an event, the gates
TroubleshootingCommon failures and what they mean
InternalsWorking on Porta itself: gates, container, subsystems, testing, settled questions

Released under the MIT License.