Skip to main content

durin

PyPI Python License: MIT

The problem with AI agents isn't that they forget — it's that they improvise. durin is built the other way around: it remembers your work, sharpens its own skills, and runs on adaptable workflows that make it follow the exact steps you define instead of inventing its own. Reliable execution you control — local-first, on any model.

durin is named for Tolkien's dwarf-king of Khazad-dûm; the mark is a dwarven anvil lit by a forge flame.

Why durin

Workflows that follow your steps

Left to itself, an LLM agent improvises a different path every time — great for open-ended chat, unreliable for work you need done a specific way. durin lets you pin it to adaptable workflows: visual graphs of nodes with routing, loop-backs, parallel branches, sub-flows, and human checkpoints. A task then runs the way you designed it — every time. The agent can pause to ask you, resume exactly where it stopped, and even edit and improve a workflow on its own (with an auto-revert safety net). Few personal agents give you this much control over how the work gets done.

A durin workflow: nodes, a router, parallel branches, a human checkpoint, and a loop-back

Automations that fire on their own

A workflow runs once when you ask; an automation runs it again on its own — on a schedule, an inbound message, a webhook, or another automation finishing. durin classifies the result, decides whether it's worth telling you about, and chains into the next automation when one is configured. When a run needs a decision only you can make — an approval, a question — it pauses and asks, either you or the counterpart you're corresponding with, instead of guessing. An automation can even carry a goal — "until invoice 4471 is paid" — and switch itself off the day it's reached.

durin's Automations: standing triggers that fire workflows, deliver results, pause for approvals, and switch off when their goal is achieved

A memory that's actually yours

durin builds an entity graph from your conversations — people, projects, documents, decisions — and keeps it as plain markdown you own. Recall is instant and offline: it searches an FTS + vector index without an LLM in the hot path, so it's fast and private. Documents you hand it (PDF, Office, EPUB, web pages) land in a separate Library, kept apart from everyday recall. The markdown is the source of truth; the search indexes are derived and rebuildable.

Recall is not something you have to ask for: before the model sees your message, durin searches memory with it and hands the hits to that turn as reference data, and the chat shows what came back as a 🧠 N memories recalled chip. When durin opens a file, the notes memory already holds about it ride along too. And a new conversation is not a blank slate — on the surfaces where it is always you (the dashboard, the CLI), it opens knowing how the last one ended.

durin's memory browser: a table of typed entities with a detail panel and its related entities

A skills ecosystem with guardrails

durin discovers skills from public marketplaces, security-scans each one for scam/malware patterns before you run it, and connects MCP servers from a curated catalog with one-click install and auto-detected OAuth. Its composition doctrine keeps behaviour reliable — prefer deterministic code, use workflows for structure, treat skills as the through-line the agent follows — and it sharpens its own skills over time.

See exactly what it's running

Every run — workflows, scheduled cron jobs, agent tasks — shows up in a live panel with per-step detail, status, and the model used. Nothing happens in a black box: watch a run, open a paused checkpoint, and pick up right where it stopped.

durin's Runs panel: live task list with per-step progress

And more

  • Any model, or none. Dozens of provider integrations — Anthropic, OpenAI, Gemini, NVIDIA, Mistral, DeepSeek, Groq, Z.AI, Qwen, Moonshot, and more, plus OpenRouter and other gateways that reach hundreds of models. Switch mid-conversation, or run fully local with Ollama / llama.cpp / vLLM / LM Studio.
  • Talk to it anywhere. A CLI, a Textual TUI, a browser dashboard, and chat channels — Telegram, Slack, Discord, email, WhatsApp, WebSocket, and more — all reach the same agent and the same memory.
  • Local-first & private. Runs as a daemon on your own machine under ~/.durin/; nothing phones home.
  • Personas, voice, and schedules. Per-channel personas (a SOUL + a model), local speech-to-text and text-to-speech, and cron for scheduled work.

…and it gets sharper while you sleep

A cold-path dream runs offline: it consolidates your conversations into the memory graph and curates your skills, so durin quietly gets better at helping you over time — without you lifting a finger.

Quick start

durin installs with uv, which fetches a compatible Python for you — nothing on your system has to match. Don't have uv yet? curl -LsSf https://astral.sh/uv/install.sh | sh

uv tool install durin-agent      # PyPI (uv picks a compatible Python)
durin onboard                    # interactive setup wizard
durin doctor                     # confirm setup is healthy
durin agent                      # launch the TUI

Run the gateway for the browser dashboard plus chat channels:

durin gateway start              # dashboard at http://127.0.0.1:8765

See the install guide for prerequisites, optional extras (memory, local models, audio), and platform notes. For everyday and in-session commands, see the CLI reference.

Documentation

License

MIT

Release files for durin-agent 0.10.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for durin-agent 0.10.8
File Size Uploaded
durin_agent-0.10.8.tar.gz 33.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for durin-agent 0.10.8
File Interpreter ABI Platform
durin_agent-0.10.8-py3-none-any.whl Python 3 none any Details

Total release size: 66.9 MB

Release files / durin_agent-0.10.8.tar.gz

Download URL durin_agent-0.10.8.tar.gz
Size 33.5 MB
Tags Source
SHA-256 checksum
How to use checksums
064a59ace3f051cee1479733f757b1471a1850a090066529bcd04fb7fec16575
BLAKE2b-256 checksum
How to use checksums
32fcfbc8a7724ec34c2be0f26e5160165c33c614d09704311c130f646ecc78f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.

Transparency log

Release files / durin_agent-0.10.8-py3-none-any.whl

Download URL durin_agent-0.10.8-py3-none-any.whl
Size 33.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
280de00982d5d9359fcad14bb463b38d6adbc317d25c5881f18128b9a0b87bd9
BLAKE2b-256 checksum
How to use checksums
7f6a891328fd50d728467b858aa5f69013298516ab61dd5c716b1f66e0b0c5d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.

Transparency log

Release history Release notifications | RSS feed

0.10.9

2 release files

This release

0.10.8 This release

2 release files

0.10.7

2 release files

0.10.6

2 release files

0.10.4

2 release files

0.10.3

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page