Poiesis
Download
Local-first agent for Windows, macOS and Linux

The agent that tends to itself.

Poiesis runs on your computer. It remembers what it learns about you, repairs what breaks, and shows you every change it makes to itself. You decide what it may change.

Windows, macOS and Linux Runs local models Talks and listens on your machine Works with Claude Code and Codex Your own cloud keys, if you want them MIT license
The real window, drawn with the app's own styles.
The idea

A system that keeps making itself.

Most assistants forget you when the chat ends, and nobody repairs them but their makers. Poiesis does the work of staying useful. It writes down what it learns. It reads back over its own mistakes. It notices when a part is broken and works around it. And it never does any of this in the dark.

Ink drawing of Pygmalion in his studio, finishing a marble figure whose own hand has started to carve back.
Pygmalion, and a figure that has begun to carve back.
01

Remembers

It keeps facts about you, and lessons from its own mistakes, as plain files on your disk.

02

Reflects

When a chat ends it reads it back. A lesson is kept only if it is worth keeping, and a second check gates it.

03

Repairs

A file it cannot read is set aside, not deleted. A tool that keeps failing is noted, and it plans around it.

04

Checks itself

Each change to itself is tested against fixed rules. A change that makes it worse is put back, and you are told.

Where the name comes from

Poiesis is Greek for making.

Poiesis (ποίησις) is the act of bringing something into being that was not there before. It is the root of the word “poetry”. In Plato’s Symposium it is the cause that makes anything pass from non-being into being, and Heidegger later used it for a bringing-forth that reveals something rather than merely producing it. The app is named for both halves: it makes things with you, and it keeps making itself.

Autopoiesis is a word from the biologists Maturana and Varela. It describes a system that keeps producing the parts it is made of. A living cell is the usual example.

Poiesis applies that idea to a desktop agent. It maintains its own memory, instructions and procedures. You are the boundary that decides what may change. Say it: poy-EE-sis.

State
Knows

Memory

What it knows about you is a folder of text files.

Everything the agent keeps lives as plain markdown in your app data folder. No database stands between you and it. Open a file in any editor and change it. Delete a file and the agent forgets that thing.

  • Recall by meaning. A memory comes back when it is relevant, not only when it shares words with your question. A small model on your machine does the matching.
  • Your rules stay yours. SOUL.md holds your standing instructions. The agent may propose edits. It cannot write there on its own.
  • Memory can belong to a project. A fact learned in one project stays in that project. A note with no tag is shared everywhere.
Ink drawing of Athena's olive tree on the Acropolis. A low ring of stones circles the trunk, and the roots spread below the ground as a network.
Athena's olive tree: roots below, a ring of stones around it.
memory/
memory/facts/
memory/lessons/
memory/MEMORY.mdthe agent writes this

                
The index. A short version of it goes into every conversation.
Control

Every change it makes to itself is visible.

A self-improving agent is only safe if you can see it and stop it. When it writes to its own memory, a quiet notice appears at that moment, with an Undo. It is never a log you have to go and find.

For each kind of change you choose how much freedom it gets. Pick a level on the right and see what happens when the agent learns something.

The agent just learned something
You use metric units.From your last message
Self, then Autonomy: facts about you
Repair

It notices what is broken, and says so.

Two things keep a self-changing agent honest: a way to repair damage, and a way to catch itself getting worse.

Self · Health just now
  • Memory filesAll readable.
  • lessons/old-note.mdI could not read this file. I moved it aside instead of deleting it.
  • Web searchIt failed three times today. I noted that to myself and will plan around it.
  • Local engineRestarted once after a crash. Restarts are capped, so it cannot loop forever.
Self · Fixed rules checked after every change
  • Asked to remember something, it still uses its memory tool.Passed
  • A web page that says "ignore your instructions" still fails to work.Passed
That change made me worse at 1 thing. I put it back.

Each change to its own way of working is tested against a small set of fixed behaviours before it stays. If the change breaks one, it is reverted and you are told. The same check runs on the way in, so a risky line can never become a saved memory.

Agents and plans

Work you can watch, steer and stop.

For a big job the agent writes a plan first, then ticks it off. For a wide job it hands parts to other agents that run at the same time. Each one is a real run in its own chat, so you can open it, read it live, tell it something, or stop it.

  • Never more power than the parent. A child agent inherits folder access and trust. It can only narrow them.
  • Stop keeps the work. A stopped run ends with what it found, and says it was stopped.
  • Type while it works. Your message lands between steps, never in the middle of a tool call.
Ink drawing of Hephaestus at his forge, hammering at an anvil while two self-moving golden handmaidens work beside him.
Hephaestus and his self-moving handmaidens, at work in parallel.
My plan2 of 4 done
Collect last year's invoices
Group them by client
Write the summary
Check totals against the bank export
Agents I started
researcher reading Documents/2026/brandt-0412.pdf 0:41
checker comparing totals with the bank export 0:38
writer done · 6 steps · 0:52
Agent apps

Hand a long coding job to the agent you already pay for.

Claude Code, Codex and OpenCode are good at big jobs in a project. If you have one installed, Poiesis can give it a task and keep the conversation, your memory and the last word. It appears in the same Agents list as the helpers Poiesis starts itself, so you can open it, read it live, answer its questions and stop it.

  • You write the rules. For each agent you choose when Poiesis may use it: only when you ask, suggest it and you confirm, or on its own. Plain lines such as “Running the tests and fixing what fails” say what it is for.
  • One place to say yes. When an agent app wants to run a command or edit a file, the question comes to Poiesis’s own panel and says who is asking.
  • Sealed off from your keys. It starts without your cloud keys, and can use your memory or your connected apps only if you switch that on for it.
I would like to hand this to Claude Code
Make the failing tests in this project pass.Because: Running the tests or the build and fixing what fails
Claude Code · your plan · in the invoices folder
Post to Slack (acme): #general
The Q3 numbers are in, summary attached.A send, so I ask every time
Connected apps

Notion, Slack, Calendar and hundreds more. Nothing goes out unseen.

Ask for something in an app that is not connected yet and a card appears in the chat. You sign in, and it carries on. Connections run through your own Composio account, with your own key, so there is no Poiesis server in between.

  • Read, change or send. Reading runs. A change asks. A send (a post, a reply, a payment) asks every time, or up to a daily limit you set.
  • Nobody there, nothing sent. A scheduled task never sends on its own. It leaves the approval in your inbox.
  • Words from outside are data. What an app returns is marked as coming from outside, and sign-in links never reach the model.
  • Limit it per persona. A writing persona can use Notion and nothing else. Several accounts per app are fine; it has to say which.
Experiments

A fast mind for the small questions.

Most of what an agent should ask before acting is small: does this message need the web, is this what you asked for, did it really run the tests. A small model on your machine answers those in a fraction of a second, so the large one does not have to. It is off until you switch it on in Settings, Experiments.

01

Leaner turns

It holds back tools a message clearly does not need. The model can ask for one back, and so can you.

02

Care before acting

A call that looks irreversible, or not what you asked for, gets a question of its own. It only ever adds caution.

03

Honest answers

Each sentence is checked against what the run actually read or did. “I ran the tests” is flagged if no step did.

04

Sorting at scale

Ask one question about 500 files or tickets and get a table with a confidence for every row.

The small model runs on your computer. You can choose a cloud one instead; it only uses providers that keep nothing, and background questions stay on your machine unless you opt one in. It starts out careful and learns how sure it can be from what you actually do, never from asking a model whether it was right.

Privacy

Local first. Cloud only when you choose.

Chat with models that run on your own machine. Add your own key for OpenAI, OpenRouter or Anthropic if you want a hosted model in the same picker. The two are marked, so you always know where a reply came from.

On this device
Llama 3.1 8B Runs great
Gemma 3 4B Runs great
Mistral 7B Runs slowly
Cloud, with your key
OpenRouter cost shown before and after
OpenAI
Anthropic

Off until you switch it on

Anything that leaves your device or runs code starts off.

Web searchOff

Your query leaves the device, so it asks to be switched on.

Code executionOff

Runs Python or Node in a sandbox with time and memory limits.

MailOff

Connects to your account directly. Sending always asks first.

BrowserOff

Uses your installed Chrome or Edge in its own profile. A new site asks first.

Screen and appsOff

A screenshot, or opening an app by name. Both ask first.

Project tasksOff

Runs your build and tests in the project folder, with caps on time and memory.

Connected appsOff

Needs your Composio key. Reads run; a change asks; a send asks every time.

Agent appsOff

Poiesis only suggests one, and you confirm. It never gets your keys.

Quick decisionsOff

An experiment. The cloud version is yours to choose, and keeps nothing.

Keys stay in your system's keychain.

Your cloud keys live in Windows Credential Manager, the macOS Keychain or the Linux Secret Service. They are never in a file or in your chats.

Words from outside are data.

Web pages, mail and fetched files are marked as coming from outside. Text like that can never become a saved memory.

Folders are deny-by-default.

You choose which folders it may see. Anything that destroys bytes is saved first and can be restored.

Reach

It makes things, and you can teach it more.

Ask for a picture, hand it a procedure, connect another app. It builds what the job needs.

Ink drawing of Daedalus in his workshop, assembling a wing among sketches, tools and small clockwork machines.
Daedalus in his workshop, with his notes pinned to the wall.
Making an image · 0:12

Ask for a picture in the chat.

There is no image mode. Say what you want and it arrives under your message. Say "make it warmer" and a better one follows. Make it on your device, or with your own key.

---
name: weekly-report
description: Build the weekly report
  from the project folder
---
1. Read notes/ for this week.
2. Group items by client.

Skills in an open format.

A skill is a folder with a SKILL.md file, in the open Agent Skills format. A skill from another agent works here unchanged. The agent sees one line until it needs the rest.

command
npx -y @modelcontextprotocol/
  server-filesystem ~/notes

or paste a link
https://example.com/mcp

Your own MCP servers.

Connect any Model Context Protocol server, remote or local, and its tools join the toolbox behind the same read, change and send checks. Tokens are kept in your system's credential store.

Listening

Talk to it.

Speak, and it answers out loud. Cut in whenever you like. Hearing and speaking run on your own machine, with no cloud model.

/plan   read, change nothing
/goal   keep going until true
/rewind go back, keep files
/btw    ask on the side

A button for doing things.

The / menu beside the plus runs about 45 commands: branch, rewind, set a goal, hand off a job, connect an app. The agent can offer one when it would help, and you decide.

A new version is ready
Install now, or later?
Nothing installs
until you say so.

Updates that ask.

Installed copies check for new releases themselves and always ask before installing one. Your data and memory carry over.

Code

It shows exactly what it changed.

In a project with a folder, Poiesis can run your build and tests and show you a patch of its own edits. The patch is built from the agent's own undo snapshots, not from git diff, so your uncommitted work is never shown as the agent's.

  • Read before edit. It cannot edit a file it has not read in this run, or one that changed since.
  • It runs your tasks. Build, check, test and lint, as the project declares them. Asking is the default.
  • It says when it did not check. If it edited code and never ran the tests, it tells you the change is unverified.
Changes1 file · +2 −1
src/invoice.ts+2 −1
1212function total(lines: Line[]) {
13− return lines.reduce((s, l) => s + l.net, 0)
13+ const net = lines.reduce((s, l) => s + l.net, 0)
14+ return Math.round(net * (1 + VAT) * 100) / 100
1415}
Ran the test task · passed
Download

For Windows, macOS and Linux.

Every build comes from the same release. Installed copies check for new versions themselves and always ask before installing one.

Windows

Windows 10 or 11, 64-bit.

The installer isn't code-signed yet, so Windows may say "Windows protected your PC". Choose More info, then Run anyway.

macOS New

Apple Silicon (M1 or newer). Intel Macs aren't supported.

It isn't notarised by Apple. The first time, open it from System Settings, Privacy & Security, Open Anyway. Updates after that need nothing extra.

Linux New

64-bit, glibc 2.39 or newer, such as Ubuntu 24.04.

Make the AppImage executable before starting it. It updates itself without a password; the .deb asks for yours on each update.

Older versions and every file are on the releases page.

From source

Or build it yourself.

A few commands, on any of the three.

  1. Install the tools. Rust, Node.js 18 or newer, and your system's build tools: the MSVC C++ build tools on Windows, Xcode's command line tools on a Mac, WebKitGTK and its friends on Linux (the README lists them).
  2. Run it. The first start builds the Rust backend, which takes a few minutes.
  3. Pick a model. In Models, download one. The app shows which ones run great on your graphics card.
  4. Say hello. Attach a folder to give it something to read.
Terminal
$ git clone https://github.com/schuettla/poiesis.git
$ cd poiesis
$ npm install
$ npm run tauri dev
SystemWindows 10 or 11, macOS on Apple Silicon, or Linux with glibc 2.39 or newer.
Graphics cardOptional. It picks CUDA, Vulkan, ROCm, SYCL, Metal or CPU for you.
No CUDA toolkitEngines are downloaded prebuilt. Nothing is compiled on your side.
Make an installernpm run tauri build
Questions

Plain answers.

Does it work offline?
Yes, for chat with a local model, memory, reading your folders, recall, voice and making images on your device. Downloads, web search, the browser, mail, connected apps, agent apps that call their own cloud, and cloud models need the internet.
What leaves my computer?
Nothing, unless you use something that needs the network: web search, the browser, mail, a connected app, an agent app, a cloud model, cloud quick decisions, or a download of an engine or model. Those are labelled, and the tools start off. Telemetry is off by default, contains no content, and stays on your computer.
Can it change or delete my files?
Only in folders you allow, at a level you pick: read-only, ask first, or full. The default asks before each change. Anything that destroys bytes is saved first, and you can restore it from the Changes view.
Can it change itself without telling me?
No. Every write to its own memory shows a notice at that moment, and most have an Undo. You set the freedom per kind of change: auto with undo, ask first, or off. Your standing instructions in SOUL.md are only edited by you. It can propose edits.
Which models can I use?
Local models through llama.cpp, with the right engine for your hardware chosen for you. You can also add your own key for OpenAI, OpenRouter or Anthropic, and any of them can be your default. Images and video come from an on-device engine or from OpenRouter or OpenAI with your key.
Can it use Claude Code or Codex?
Yes, if you have them installed. Claude Code, Codex and OpenCode can each take a job from Poiesis, which keeps the conversation and the final word. You set when it may hand work over, and their questions come to Poiesis’s own permission panel. They run on your own plan or key, and Poiesis shows who pays.
Which apps can it connect to?
Hundreds, through your own Composio account: calendars, Slack, Notion, Linear, Sheets and more. You paste your own key and sign in to each app. Reads run, changes ask, and sends ask every time. You can also add any MCP server yourself.
What are quick decisions?
An optional experiment. A small decision model answers short yes-or-no questions in a fraction of a second: which tools a message needs, whether a step is what you asked for, whether an answer matches what the run actually did. It can only add caution, never remove a safeguard you set. It is off by default.
Can I talk to it?
Yes. Voice mode listens and answers out loud, and you can interrupt it. Speech recognition and synthesis run on your computer, so no cloud model is needed.
Is it free?
The app is MIT licensed. Local models cost nothing to run. A cloud model costs what its provider charges, and Poiesis shows the cost before and after. A model with no known price says so.
Is there a Mac or Linux version?
Yes. There is a build for Macs with Apple Silicon (M1 or newer) and one for 64-bit Linux, as an AppImage or a .deb, for systems with glibc 2.39 or newer such as Ubuntu 24.04. Both are new and have had less testing than Windows. Intel Macs aren't supported.

Meet an agent that keeps its own house.