Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By samtalki
Persistent Julia REPL for Claude Code — multi-session with Revise.jl hot-reloading, eliminates TTFX startup penalty
npx claudepluginhub samtalki/agentrepl.jl --plugin juliaActivate a Julia project/environment for the session
Set up a Julia development workflow with Revise hot-reloading
Show Julia session information (version, project, variables, loaded modules, Revise status)
Control the log viewer for real-time Julia output
Manage Julia packages (add, remove, status, update, test, develop)
Admin access level
Server config contains admin-level keywords
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Scientific research agent extension - turns research goals into reproducible Jupyter notebooks with Python REPL, data analysis, and ML workflows
Skills for working with nteract notebooks
Multi-agent workflow framework for building, testing, and shipping statistical software packages
Self-documenting, self-improving framework for analytical repositories
Persistent memory system for AI coding sessions — cross-tool memory sharing with 6-dimensional hybrid search
Self-evolving Claude Code system that learns from corrections, manages context, and improves every session
Modifies files
Modifies files
Hook triggers on file write and edit operations
Hook triggers on file write and edit operations
Share bugs, ideas, or general feedback.
Persistent Julia REPL for AI agents via MCP (Model Context Protocol). Supports multiple isolated sessions and Revise.jl hot-reloading.
The Problem: Julia's "Time to First X" (TTFX) problem severely impacts AI agent workflows. Each julia -e "..." call incurs 1-2s startup + package loading + JIT compilation. AI agents like Claude Code spawn fresh Julia processes per command, wasting minutes of compute time.
The Solution: AgentREPL provides a persistent Julia session via MCP STDIO transport. The Julia process stays alive, so you only pay the TTFX cost once.
AgentREPL is the simplest way to give Claude Code a persistent Julia session. Three things set it apart:
Zero-friction setup. STDIO transport means Claude Code spawns and manages the Julia process automatically. No server to start, no port to configure, no process to monitor. Install the plugin and start coding.
Workflow-native Revise.jl. Every worker auto-loads Revise.jl. The plugin's PostToolUse hook automatically calls revise after you edit .jl files. You never manually reload code.
True process isolation. Each session is a separate Distributed.jl worker. You can redefine structs, kill crashed sessions, and run parallel workloads without cross-contamination. reset does what it says -- complete state erasure including type definitions.
AgentREPL is not a Julia IDE replacement. It has 8 tools, not 35. It does not have debugging, semantic search, or a dashboard. If you need those, see the comparison section below. AgentREPL's approach is that eval plus Julia's existing introspection capabilities (which you can call directly via eval) covers most agent workflows with minimal complexity.
using Pkg
Pkg.add(url="https://github.com/samtalki/AgentREPL.jl")
Or for development:
Pkg.dev("https://github.com/samtalki/AgentREPL.jl")
The easiest way to use AgentREPL is via the included Claude Code plugin:
claude /plugin add samtalki/AgentREPL.jl
This provides:
/julia-reset, /julia-info, /julia-pkg, /julia-activate, /julia-log, /julia-session, /julia-revise, /julia-developeval, automatic revise after .jl file editsclaude mcp add julia-repl -- julia --project=/path/to/AgentREPL.jl /path/to/AgentREPL.jl/bin/julia-repl-server
Start a new Claude Code session. The Julia MCP server will auto-start when Claude needs it.
Ask Claude to run Julia code:
"Calculate the first 10 Fibonacci numbers in Julia"
Claude will use the eval tool and display REPL-style output:
julia> [fibonacci(i) for i in 1:10]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
The first call may take a few seconds for JIT compilation; subsequent calls are instant.
AgentREPL uses a multi-session worker subprocess model via Distributed.jl:
┌─────────────────────────────────────────────────────────┐
│ Claude Code │
│ ↕ STDIO (MCP) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ AgentREPL MCP Server (Main Process) │ │
│ │ ↕ Distributed.jl │ │
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ │ Session "default" │ │ Session "testing" │ ... │ │
│ │ │ (Worker 2) │ │ (Worker 3) │ │ │
│ │ └──────────────────┘ └──────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
Why a worker subprocess?
reset can kill and respawn the worker for a true hard resetevalEvaluate Julia code in a persistent session. Output is formatted in familiar REPL style:
julia> x = 1 + 1
2
julia> x + 10
12
Variables persist! Multi-line code works too:
julia> function fib(n)
n <= 1 && return n
fib(n-1) + fib(n-2)
end
[fib(i) for i in 1:10]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Printed output appears before the result:
julia> println("Computing..."); 42
Computing...
42
Errors are caught with truncated stacktraces:
julia> undefined_var
UndefVarError: `undefined_var` not defined
Stacktrace:
[1] top-level scope
... (truncated)