Live builds
Every file fpm compiles, in parallel, with its package, status and time — warnings included.
Open source · Python & Qt · macOS, Linux, Windows
VibeFPMGUI is a graphical front end for the Fortran Package Manager. Build, run, test and debug with live progress, explore your dependencies as a graph, and edit Fortran with a language server, linting, formatting, git, coverage and complexity metrics — and an AI assistant that runs entirely on your machine.
One window for the whole loop: open a project, build, test, debug, read the messages, fix the code, commit, repeat. Every panel docks where you want it.
Every file fpm compiles, in parallel, with its package, status and time — warnings included.
Each test with pass/fail, time and its own output — several at a time if you like — and line coverage in the gutter.
Breakpoints, stepping, the call stack and variables with gdb — for programs, tests and examples.
Your project and every dependency as an interactive graph, with layouts, themes and update checks.
Syntax highlighting, compiler markers, multi-row tabs, a command palette, find and replace across the project.
Hover docs, go to definition, completion, argument hints, references and rename, via fortls.
fortitude checks your code as you type, with one-click fixes; fprettify tidies it.
What changed, staged and untracked, with side-by-side diffs of each file.
Size and complexity of every procedure, and its control-flow graph.
A shell in the project's folder, with the app's environment — fpm and the compilers on hand.
Named sets of build options in vibefpm.json, beside fpm.toml, to share with your team.
Reviews, a chat about your code, explanations and fixes — from a model on your own computer, with Ollama.
Build
Run fpm build, run, test, update and clean
from the toolbar — or Build Tests, to compile the tests without running them — with the usual
options: profile, compiler, flags, features, target and arguments. Hover an option to see the fpm flag it becomes.

Build configurations
Save the Build options as named configurations — “gfortran debug”, “release”, “ci” — in a
vibefpm.json beside the project's fpm.toml, so they can be committed with it.

Test, run & coverage
Test builds, lists the tests, then runs each one through a small wrapper so its start,
end and exit code are known — even with your own --runner such as mpirun.



Debugging
Click left of a line number for a breakpoint, press F5, and the program — or a test, or an example — is built with debug information and runs under gdb, through its Debug Adapter Protocol.
a(2:3), p%x — with a history.
On Linux, the Valgrind button beside each program, test and example runs it under
Valgrind's memory check through fpm's --runner: leaks and invalid reads and writes, each with
its file and line.
Dependencies
The dependency diagram is built from your fpm.toml and those of every downloaded dependency —
git, local path, registry and metapackages, each with the tag, branch or version it's pinned to.



Project files
The file tree lists the project and each dependency, with fpm's folders badged — library sources, programs, tests, examples, include files. One click previews a file; double-click keeps it open.
.gitignore line.fpm new.

Editor
Double-click a file — or a row in the build grid — and it opens in the built-in editor, with the build's warnings and errors in the gutter. Open tabs, cursor positions and the file tree are remembered per project, and big files stay quick.

Rest on a name for its declaration and doc comment. Intrinsics get their full manual page, rendered, with a badge and their category.

⌘⇧P (Ctrl+Shift+P) finds any command in the menus by typing part of its name. Tabs can wrap onto several rows; lines can be commented, moved, sorted and re-cased from the Edit menu.

fortitude checks the text in the editor — saved or not. Findings are underlined and marked in the gutter, with the rule and the suggested fix.

The Problems panel gathers the compiler's, fortitude's and fortls's messages; apply fortitude's fix, or ask the AI to explain or fix one.


fprettify re-indents and re-spaces the file, as a single Undo step.
Language server
The editor talks to fortls, which indexes your project and its dependencies — only fpm's own folders, so a Python environment inside the project doesn't get in the way.

After two letters, or a % for a type's components — your names, your dependencies' and the intrinsics.

Typing a call shows its arguments, the current one underlined, with its declaration and documentation.

The file's modules, types and procedures, with a badge for each kind; it follows the cursor.

F12 or ⌘-click jumps to a definition — even inside a dependency — and back again. ⇧F12 lists every use, grouped by file. ⌘T finds any symbol in the project.

F2 renames a name everywhere it's used, after showing every line that will change. Open files change in the editor (one Undo); dependency files are left alone unless you tick them.
Git & terminal
The Git panel shows the repository's branch, what's staged, changed and untracked, and a diff of the selected file — side by side or unified, double-click to open the line.


Complexity
The Complexity panel measures every procedure in the project — lines of code, cyclomatic complexity, parameters, nesting, as lizard measures them — with the most complex first, and draws the selected one's control-flow graph.
if, select case,
loops, exit and cycle; click one to go to its line.
Local AI
AI → Review Current File sends the file in the editor — and its compiler messages — to a model running locally through Ollama. No code is sent anywhere, and once the model is downloaded it works offline.
qwen2.5-coder:7b), a focus, and how long and how
carefully it answers.
Make it yours
View → Theme colors the whole window — light, dark, Nord, Dracula, Solarized, Gruvbox and more — or follows your system. View → Syntax Colors offers every installed Pygments style for the code. Panels dock anywhere, and collapse by dragging their edge.





The easiest way is pixi: one environment with fpm, gfortran, fortls, fortitude, fprettify and Ollama — and, on Linux, gdb and Valgrind.
# get the code
git clone https://github.com/jacobwilliams/VibeFPMGUI
cd VibeFPMGUI
# start it (reopens your last project)
pixi run start
pixi run start path/to/fpm.toml
# try the demo project
pixi run demo
pip install . # the app
pip install .[fortran] # + fortls, fortitude, fprettify
pip install .[ai] # + the Ollama client
vibefpmgui path/to/fpm.toml
fpm and a Fortran compiler need to be on your PATH. For AI features, install
Ollama; the app offers to download the model the first time. For
debugging, gdb 14 or newer (Linux).
# build the image and run the app, its window shown by XQuartz
docker/build-docker.sh
See docker/README.md: the image has the project's Linux environment, and the demo project is ready in Recent Projects.
The demo project in examples/demo uses features, profiles, git, path and
metapackage dependencies, warnings, parallel compiles and tests — and a test written for the debugger — so
every part of the app has something to show.
Python and Qt (PySide6 through qtpy), pyqtgraph for the graphs and Pygments for highlighting — on top of fpm, fortls, fortitude, fprettify, gdb, Valgrind and Ollama.
Source on GitHub