One agent. Every surface. Your rules.

the agent that works while you don't
turn any model into an agent you can run unattended
terminal · cron · CI · telegram · discord
asks before touching anything real

curl -fsSL https://github.com/lvndry/jazz/releases/latest/download/install.sh | bash

a real session, not a screenshot

It plays
unattended.

  ▞ jazz — tuesday, 07:00, unattended
» plan my morning: email, calendar, weather
╺ gmail.search — 14 unread, 3 need you
╺ calendar.today — 4 events, first at 09:30
╺ weather.now — 18°C, rain after 14:00
╶ Three emails matter: the contract redline,
  Ana's question, and the invoice. Your 09:30
  clashes with the dentist — want me to move it?
▐ reschedule "design sync" → 11:00
╺ approved — moved. Bring an umbrella.
▖░▚░▘ idle
▐jazz wants to reschedule an event
calendar lvndry@example.com
event design sync — today 09:30
move to today 11:00 (CET)
attendees 3 people are notified
Attendees see the change immediately.
enter approve esc reject a always allow

the five lanes count real concurrent work — mailbox, calendar and weather at once. and when jazz needs authority it stops and asks, wherever you are.

everywhere at once

Install once.
It's already there.

The same agent, the same tools, the same memory — behind every front door. When a job needs your permission it asks you wherever you are, rather than stopping.

▞ jazz — your terminal
» remind the team about standup
╺ sent — and scheduled daily, 08:55
Telegram · @your-jazz-bot
You: what did I miss today?
Jazz: 2 decisions, 1 PR merged — recap below.
Discord · #ops
@jazz summarize this thread
Jazz: 14 messages → 3 action items.
GitHub · pull request #384
on: pull_request
jazz reviewed: 2 comments, no blockers.
launchd · 07:00 every day
$ jazz workflow run morning-brief
ok — briefing delivered to Telegram

terminal · scripts · cron · CI · telegram · discord — the surface matrix

under the hood

The loop is twenty lines.
The guards are the product.

» prompt any surface context memory · skills model 18 providers ▐ approval risk tiers the loop runs until the answer is earned — budget pressure and meltdown detection stand guard
0% of context
01

The context is earned, not dumped

Memory, skills and history are assembled per turn, then trimmed turn-aware — a message is never split in half. The window is a budget, and jazz counts it.

read the internals →
02

Any model. Including yours.

18 providers behind one loop — OpenAI, Anthropic, Google, Mistral, Groq, OpenRouter… or ollama and llama.cpp with no API key at all.

read the internals →
03

Tools run in two phases

Every call is classified by risk before it executes. Reading your calendar just runs; writing to it stops and asks — and the ask reaches whatever surface you're on.

read the internals →
04

Long runs survive on purpose

Budget pressure, meltdown detection, and compaction: warn at 70%, compact at 80%, trim at 95. Watch the meter — this is the ladder, animated.

read the internals →

the trust argument

It asks first.
Wherever you are.

A coding agent asks to edit a file you can revert. Jazz asks to send an email, move a meeting, post where other people read. There is no undo — so the approval card is the most consequential component in the product, and it travels to whatever surface you're on. Same facts, native dress: a band in the terminal, a message from a bot, a parked run in CI.

▐jazz wants to send an email
from lvndry@example.com
to team@example.com
subject Monday priorities
attachments none
enter send esc reject a always allow
Jazz bot

I'd like to send an email — approve?

from lvndry@example.com
to team@example.com
subject Monday priorities
attachments none
07:02 · your run is paused until you answer
jazz bot commented · run parked

This scheduled run needs a human before it can continue:

action send an email
from lvndry@example.com
to team@example.com
subject Monday priorities

Approve from any connected surface — the run resumes where it stopped.

waiting for a human · nothing was sent

steal these

Workflows,
ready to copy.

Production-ready recipes with install steps and risk tiers. Hover one to watch a condensed run.

Inbox triage
╺ gmail.search — 41 unread
╺ read-only: nothing moved
╶ 3 need you — summarized
read the recipe →
PR review in CI
╺ diff read — 12 files
╺ 2 inline comments
╶ no blockers, approved
read the recipe →
Research radar
╺ 18 papers scanned
╺ weak sources challenged
╶ cited digest → your inbox
read the recipe →
Verification council
╺ 4 reviewers, isolated
╺ budgets bounded
╶ one accountable verdict
read the recipe →
Attack containment
╺ traffic anomaly traced
╺ WAF rule drafted
╶ waiting on your approval
read the recipe →
Media companions
╺ screenshot + recording read
╺ timeline reconciled
╶ briefing card generated
read the recipe →
more in the cookbook →

Questions people actually ask

What is Jazz?

Jazz is a free, open-source AI agent harness. It runs a general-purpose AI agent on your own machine that can use a terminal, read and write files, search the web, send messages, and work on a schedule — asking for your approval before anything consequential.

Is Jazz free?

Yes. Jazz is MIT-licensed open source and costs nothing. You pay only your chosen LLM provider for tokens — or nothing at all if you run local models through Ollama or llama.cpp.

Does Jazz run locally or offline?

Yes. Jazz runs entirely on your machine and supports fully local models via Ollama and llama.cpp, so it works airgapped: no API keys, no telemetry leaving your disk, and an offline mode that disables every outbound request.

Which LLM providers does Jazz support?

Eighteen providers behind one interface, including Anthropic, OpenAI, Google, Mistral, Groq, OpenRouter, and fully local options like Ollama and llama.cpp. Switch models without changing anything else about your agent.

How is Jazz different from a chatbot CLI?

A chatbot answers one prompt and stops. Jazz is an agent runtime: the same agent works in your terminal, in Telegram or Discord, in CI pipelines, and on cron schedules — unattended, with per-run approval policies controlling what it may do on its own.

Is it safe to let an agent run on my machine?

Jazz treats safety as load-bearing: every tool declares an honest risk tier, mutating actions are gated behind explicit approval, external input is validated at the boundary, and scheduled runs get a per-workflow auto-approve policy you set.

read the docs — calm on purpose

Your move.

curl -fsSL https://github.com/lvndry/jazz/releases/latest/download/install.sh | bash

or npm install -g jazz-ai · free to run: OpenRouter's free router needs no card, and ollama runs on your own hardware

MIT licensed · built in the open · /llms.txt