SageFs is a live development environment that eliminates the edit‑build‑run cycle.
Tests run as you type — no save needed. Eval code on demand with Alt+Enter.
Results stream to every editor you use, from a single shared daemon.
SageFs is a .NET global tool. One command, no config files.
$ dotnet tool install --global SageFs
Point it at your project. The daemon starts, loads dependencies, and opens the TUI.
$ sagefs --proj MyProject.fsproj
Edit any .fs file — tests run on every change. Hit Alt+Enter to evaluate code on demand. Results stream to your editor.
Edit any .fs or .fsx file. Tests start running on every change — no save needed. Hit Alt+Enter to evaluate code on demand. Both modes, all the time.
SageFs watches your entire project tree. It sees the change as it happens, classifies it (.fs → reload, .fsproj → soft reset), and routes it to the right handler.
A dedicated worker process — already warmed up with your project's dependencies loaded — compiles and executes the changed code. No cold start. No full rebuild.
~100 msThe live testing engine identifies which tests touch the changed code and re-executes just those. Green checkmarks or red failures stream back instantly.
~300 msVia Server-Sent Events (SSE), every connected client — VS Code, Neovim, Visual Studio, the GPU GUI, AI agents — sees the results simultaneously. No polling. No refresh.
~500 ms total
Two eval modes: tree-sitter auto-detects the enclosing scope in .fs files
(inferred mode), or use ;; delimiters for explicit cell boundaries
(manual mode). Virtual text for inline results, SSE-driven live diagnostics, gutter signs for
test pass/fail and code coverage.
Select code, hit Alt+Enter, see colored annotations inline.
Sidebar panels for hot reload file trees, live test status, type exploration,
and session switching. Auto-detects or starts the daemon.
A terminal interface with panes for code input, eval output, session management, and live test results. Completion menus, 256-color themes. Works over SSH. Zero dependencies.
A GPU-accelerated rendering of the same UI. Crisp text at any resolution, smooth scrolling, and sub-millisecond frame times. Shares the same layout engine as the terminal — gutter features are still catching up.
Integration with Visual Studio's tool windows. Eval, CodeLens, and session management — embedded in the IDE enterprise teams already use. Daemon auto-management included. Live testing UI is still in progress.
get_completions tool. Explore any loaded .NET API interactively.
Diagnostics (type errors, warnings) stream inline as you type.
Cell[,] grid — a 2D array of characters with colors.
The TUI backend emits ANSI escape codes. The Raylib backend draws GPU quads.
Same layout engine, same input handling, pixel-perfect parity.
update function.
No shared mutable state. No locks. Side effects execute after the model updates.
The UI is always a pure function of the current model.
;; is an isolated transaction..fsx script file. Each statement runs independently — partial progress survives failures.