Skip to content

Ship of ToolsAn agentic development environment for Julia

You and the agent share one Julia REPL; figures render in the window; sessions keep running on the server.

Asked for a bar chart of the route legs, a Claude Code session edits scripts/route.jl, runs it in the shared Julia REPL and shows the chart in the preview (navigation column cropped, sped up).
Asked for a bar chart of the route legs, a Claude Code session edits scripts/route.jl, runs it in the shared Julia REPL and shows the chart in the preview (navigation column cropped, sped up).

A desktop window, drawn on the GPU, with a keyboard-driven layout: a navigation tree, a file preview, an agent pane and a Julia REPL drawer.

CairoMakie figures appear inline; interactive WGLMakie figures and Pluto notebooks open in your browser. Because the window draws all of this itself, it needs a graphical desktop, not a terminal. Linux; Windows and macOS run as frontends to a Linux backend (macOS is experimental). See Platforms.

Several agents, one list

Every agent session is a row in Sessions mode, on this machine or on any connected host. The row colour is the agent's work state, so you can see which session needs you without opening each one. Shift+Arrow switches sessions; each session keeps its own Julia REPL, and switching never restarts it.

Demo session rows changing colour as a script sets their work states: green working, red waiting for your answer, purple waiting on a job, blue done, gray idle. Each row's ready tag means its supervisor has a live agent process running.
Demo session rows changing colour as a script sets their work states: green working, red waiting for your answer, purple waiting on a job, blue done, gray idle. Each row's ready tag means its supervisor has a live agent process running.

Navigate the project, see the file

The navigation pane is a tree whose root you switch with one key: f for files, m for modules and their definitions, s for sessions, h for hosts. The preview pane renders the entry under the cursor: markdown with typeset math, paged PDF, images, HDF5 structure, syntax-highlighted Julia.

The preview follows the cursor through notes with math, the agent's bar chart, an HDF5 file, a PDF and the route figure.
The preview follows the cursor through notes with math, the agent's bar chart, an HDF5 file, a PDF and the route figure.

Your machines as one workspace

The backend runs where the data and GPUs are; the window runs on your laptop or desktop and attaches over SSH. Sessions, REPLs and agents keep running on a remote server when the lid closes or the window restarts (closing the window ends the sessions of a backend on the same computer, not those of a remote one), and several windows can attach to one backend. See Going remote.

Extend in Julia

A preview for a new file type is a Julia plugin: a FileType subtype, a matches method and a preview method, with no Rust changes. This one shows a CSV file as a markdown table. The built-in text, source, PDF and video previews use the same interface. Today a third-party plugin loads only from a source checkout; see Discovery and the HDF5 preview tutorial.

julia
struct CsvFile <: FileType end

ConceptExplorerCore.matches(::Type{CsvFile}, path) = endswith(lowercase(path), ".csv")

function ConceptExplorerCore.preview(::Type{CsvFile}, path)
    # ... build a PreviewPayload of "text/markdown" from the CSV rows
end

The full walkthrough, with the table-building body, is in Writing a FileType Plugin.

Install

Frontend and backend together on one Linux machine. For a remote backend, a second frontend or Windows, see Going remote and Install details, which also lists what the installer writes and how to remove it. What it touches:

  • Everything goes under your home directory, mostly ~/.local/share/sot, plus user lingering so the backend keeps running after logout on Linux.
  • The Claude skills go into ~/.sot-comm/claude-layer, which only a session Ship of Tools starts loads (four onboarding skills stay in ~/.claude/skills), and only two mail hooks are merged into your Claude settings; the Codex skills and plugin go into your global ~/.codex and ~/.agents. An install removes the skills and hooks an earlier release put in your own ~/.claude only where they are exact copies.
  • Sessions start their agent with fixed permission flags: Claude Code in auto mode; Codex with approvals, the sandbox and hook trust all bypassed.

No isolated mode yet: try it under a separate user account or in a VM. See What the installer changes.

bash
curl -fsSL https://raw.githubusercontent.com/kalidke/ship-of-tools/main/scripts/install.sh | bash -s -- --local

Or ask a coding agent on the target machine:

text
Install Ship of Tools: fetch https://raw.githubusercontent.com/kalidke/ship-of-tools/main/docs/INSTALL-AGENT.md and follow it.

Read next

  • What it does — every feature, most with a short recording.
  • Quickstart — install, launch, start an agent session.
  • Your first session — the panes, the agent, drawers and modes, one at a time.
  • Architecture — the frontend, the daemon, the Julia kernel and the agent sessions.
  • Roadmap — what is built, and what is planned.

Status: in active development and used daily with a Linux backend and a Windows frontend (installed from the release zip, no installer script yet).

An agentic development environment for Julia. Released under the AGPL-3.0-or-later, with a commercial license on request.