Free and open source. Runs on your machine.
Wire up AI that stays on.
Boltjar is a visual node editor. Wire triggers, models, stores and outputs on one canvas, press On, and the graph keeps running on your machine: a chat assistant, a webhook, a morning digest, an agent with tools.
Install
Three steps, then press On
Get the code
Clone the repo, or download the ZIP and unpack it anywhere.
git clone https://github.com/Boltjar/Boltjar.gitStart it
On Windows, double-click
start.bat. On macOS or Linux, run the start script from the folder../start.shOpen the link it prints
The editor runs at this address, and your browser opens it on its own when it can.
http://127.0.0.1:8770
The first start needs Node.js 18 or newer, because it builds the editor once. No Python 3.11 to 3.13 on the machine? The start script fetches a portable Python 3.12 and checks its SHA-256 before it uses it.
Coming soonA one-line installer.
What you can build
Six graphs to start from
Each one is a guide in the docs, wired from the nodes that ship with Boltjar.
Chat assistant
- Chat Input
- Template
- LLM
- Chat
Talk to a local model through Ollama, or to a cloud model with a key. The chat example keeps its history in a SQLite table.
Runs locally with OllamaWebhook to LLM
- Webhook
- Template
- LLM
- Append File
An endpoint on your machine. A POST fires the graph, the model sums up the body, and the summary goes wherever you wire it: a file, a chat service, a database.
Runs locally with OllamaScheduled digest
- Schedule
- HTTP Request
- LLM
- Write File
Cron in a node. At 9 every morning, fetch a feed or an API, have the model sum it up, and save or send the result.
Runs locally with OllamaRAG over your notes
- Chunk
- Embed
- Vectors
- LLM
Chunk text, embed it with bge-m3 on Ollama, keep it in a vector store on disk, and hand the closest chunks to the model.
Runs locally with OllamaTool-calling agent
- LLM
- Tool
- Tool Args
- HTTP Request
Tools are nodes. A Tool tells the model what it can call, the nodes behind it do the work, and the result goes back to the model.
Runs locally with OllamaVoice
- Chat Input
- LLM
- Strip
- TTS
Replies you can hear: the model writes, TTS speaks with an xAI, Fish Audio or ElevenLabs voice, and STT turns a clip back into text.
Needs a provider key
How it works
ComfyUI's typed graph, with n8n's triggers
Every trigger, model, store, transform, condition and output is a node, and behaviour is how you wire them.
A graph is a server
Press On and it keeps running, triggers listening, until you turn it Off or stop Boltjar. Closing the browser tab does not stop it.
Triggers push, data is pulled
A trigger fires an event. The node it reaches pulls its inputs at that moment, so a Template never runs on a clock: it runs when the LLM needs its text.
Typed pipes
Every port has a type, and a wire only lands where the types fit. The editor checks it while you drag, and the server checks it again before the graph turns On.
Nodes are Python
A node is a class with a decorator. Drop a pack folder into packs/, restart, and its nodes sit next to the built-in ones.
Local-first
Your graphs run on your machine
Runs on your computer
The server listens on 127.0.0.1. Its API checks the Host, the Origin and a token your install creates, which keeps web pages you visit away from it.
Your files stay yours
Graphs, snapshots, stores and the keys you add in the editor live in the
user/folder, which git ignores.No telemetry, no account
The editor talks only to your own Boltjar server and loads nothing from anywhere else. The server calls only what you set up: the models and URLs your wired nodes use, Ollama, and the providers and endpoints you connect, which it also asks for their model lists.
Offline with Ollama
Chat, tool calls and embeddings run on local models through Ollama. With no model picked, or a cloud model without its key, the LLM node answers with a mock reply, so a chat graph still runs.
Support
Support Boltjar
Boltjar is free, and I build it in the open. If it saves you time or keeps something you care about running, sponsoring it on GitHub is the most direct way to keep it moving. Clear bug reports, node packs and doc fixes help just as much.