Open Source/Terminal IDE

Terminal-native
Julia notebooks with Sessions.jl

Reactive notebooks in your terminal. Pluto-compatible format, full IDE experience, real-time diagnostics.

Your notebook, in the terminal

One command to open, edit, and run reactive Julia notebooks. No browser required.

bash
# Install as a Julia app
julia -e 'using Pkg; Pkg.Apps.add(url="https://github.com/GroupTherapyOrg/Sessions.jl")'

# Open a notebook
sessions my_notebook.jl

# Create a new notebook
sessions

# Run headlessly (CI, scripts)
sessions run my_notebook.jl

Everything you need

Reactive Notebooks

Cells auto-re-run when dependencies change. Pluto-style reactivity powered by ExpressionExplorer.jl.

Pluto Compatibility

Load, edit, and save Pluto .jl notebooks natively. Same file format, same reactivity model.

Terminal IDE

File browser, REPL panel, diagnostics panel, tab bar, activity bar, status bar. A full IDE in your terminal.

Real-time Diagnostics

JETLS (JET.jl LSP) integration catches type errors and undefined variables as you type.

@bind Widgets

Slider, TextField, CheckBox, Select, NumberField. PlutoUI-compatible @bind protocol for interactive notebooks.

Agent-first Notebook

Code/state separation lets LLMs, IDEs, and scripts safely modify notebooks while the TUI watches and reacts.

3600+

Tests

5+

Widgets

20+

TUI Components

3

Layers

Agent-ready architecture

Sessions.jl separates code from execution state. Your notebook is two files, not one.

.jl

notebook.jl

Source of truth

Cell code, cell order, fold/disabled metadata

Safe for agents, LLMs, IDEs, and scripts to modify directly.

Pluto-compatible format. Version-controlled.

.toml

notebook.session.toml

Execution cache

Cached outputs, stdout, runtimes, error messages

Optional, gitignored, auto-generated. Delete it anytime.

Outputs restored instantly on restart. No re-execution needed.

How agent-driven development works

1.

An external tool (LLM agent, IDE, script) modifies cell code in the .jl file.

2.

The built-in file watcher detects the change within ~0.5 seconds.

3.

Changed cells are marked stale — old outputs remain visible for reference.

4.

You re-run stale cells. New outputs are cached to .session.toml.

Coming from Pluto?

Sessions.jlPluto
Code storage.jl (cell code + order).jl (code + order + embedded pkg state)
Output storage.session.toml (separate file)In-memory only (recomputed on open)
External editsSafe — file watcher auto-detects changesRisky — may break embedded metadata
StartupInstant — outputs restored from cacheFull re-execution on every open
ReactivitySame model (ExpressionExplorer.jl)Same model
File formatPluto-compatible .jl filesPluto .jl files
InterfaceTerminal TUI (Tachikoma.jl)Browser (HTTP server)