Tur: Persistent State and Memory Engine for AI Agents
"From a distance, he appeared to be a giant. But as they approached, he became a man of normal stature."
— Jim Knopf und Lukas der Lokomotivführer by Michael Ende
Tur is an open-source state and memory management engine for AI agents and Large Language Models.
It provides persistent, structured persona state across sessions, harnesses, and codebases via the Model Context Protocol (MCP) and local CLI tools. Rather than relying on ephemeral system prompt configuration, Tur manages persona identity, operational principles, hierarchical memory (L1 ledger & L2 knowledge graph), and session continuity as structured, version-controlled files.
The project is inspired by the Tur Tur Principle: The complexity of AI behavior can be made more focused and manageable by imposing clear constraints, deterministic state files, and explicit behavioral protocols.
[!NOTE] Public Alpha: Tur is currently in active Phase 1/2 development. See the Project Roadmap (EP-0002) for current features and upcoming milestones.
| Package |
|
| Code |
|
| Tools |
|
| CI/CD |
|
| Scans |
|
🏛️ The Tri-Partite Architecture
Tur operates on a strict ontological boundary separating the "Mind" from the "World". To achieve high fidelity and true portability, an agentic system must be divided into three distinct pillars:
- The Traveler (Managed by Tur): The intrinsic, portable components of the Mind.
- Persona: The identity, aleph, and version.
- Principles: The cognitive filters (The Council of Giants).
- Protocols: Active behavioral loops (e.g., The Evolution Protocol).
- Memory: The L1 Ledger and L2 Graph representing the continuity of self.
- The Terrain (Managed by the Project): The local physics and environment the agent operates within.
- Codebase: The raw files.
- Styleguide: The rules for formatting and structure in this specific repo.
- Documentations: Any additional context (e.g., this README).
- The Harness (Managed by the Agent Framework): The engine providing compute and capabilities.
- Inference Engine: The underlying LLM (e.g., Claude, Gemini).
- Tools: The mechanical affordances (e.g., bash, git, file reading).
- Examples: Claude Code, Gemini CLI, OpenCode, Pi, etc.
Tur is exclusively responsible for The Traveler. By ensuring the "Soul" is mathematically bound (via Merkle hashing), cleanly decoupled from anthropomorphic engine leaks, and separated from the Harness and Terrain, the Persona becomes an obligate symbiote—able to be unplugged from one Harness and plugged into another without losing its identity or memories.
📂 Project Structure
Tur uses a multi-tenant architecture to ensure strict separation between different personas. All state is stored in the
.tur/ directory.
Local vs. Global Scope
Tur respects a standard configuration hierarchy:
- Global (
~/.tur/): The universal state for your system. This is where your masteruser.yaml(The Architect's profile) lives. - Local (
./.tur/): The repository-specific state. If you initialize Tur inside a project, it creates a local.tur/folder containing the Personas bound to that specific Terrain. A localuser.yamlhere will override the global profile.
./.tur/
├── user.yaml # Local user profile override
├── personas.yaml # Index mapping persona names to UUIDs
├── state.yaml # Stores the active/default persona UUID
└── personas/
├── <persona-uuid-1>/
│ ├── persona.yaml # The DNA/Kernel for the persona
│ ├── sessions.yaml # The session index
│ ├── sessions/ # Flat session files
│ │ ├── 20260529_185258_143a5bc0.yaml
│ │ └── 20260529_173616_c2212cf6.yaml
│ └── memories/ # Content-Addressable Storage (Merkle Memory)
│ ├── archive/
│ ├── 20260412_025949_axiom_e1324...yaml
│ └── 20260418_160825_event_c98f1...yaml
└── <persona-uuid-2>/
├── persona.yaml
└── memories/
The core application logic resides in src/tur/:
cli/: The package folder housing our split executables:cli/agent.py(runtime CLI),cli/admin.py(administrative TUI), andcli/mcp.py(Harness MCP gateway).mcp_server.py: The Model Context Protocol server (The Porcelain for LLM interaction).models.py: The Pydantic data models (The "Law" of the system).user.py: User profile bootstrapping and domain management.persona.py: Active persona resolution and path trace management.session.py: Flat session trackers, session index consolidation, and epilogue note logic.dreaming.py: Insight extraction, memory parsing, and LLM dreaming consolidation.compiler.py: Renders the final System Prompt from the persona state.
🚀 Usage
Tur divides its execution footprint along strict Tri-Partite security boundaries using distinct command-line binaries:
1. Installation & Setup
System-Wide CLI Tools via uv tool (Recommended)
Installs Tur into an isolated environment and makes the executables (tur, tur-adm, tur-mcp) globally available on
your system PATH:
# Install the core agent CLI
uv tool install tur
# Or install with human governance TUI (tur-adm), Gemini dreaming (gemini), and MCP gateway (tur-mcp)
uv tool install "tur[admin,gemini,mcp]"
# Upgrade to the latest version anytime
uv tool upgrade tur
Via PyPI / pip
# Install core agent runtime in your active environment
pip install tur
# Or with administrative, Gemini SDK, and MCP extras
pip install "tur[admin,gemini,mcp]"
Zero-Install with uvx
Run commands instantly in ephemeral environments without permanent installation:
# Launch the sovereign human administration TUI
uvx --from "tur[admin]" tur-adm persona init
# Run the agent lifecycle commands
uvx tur wake
# Run the MCP server
uvx --from "tur[mcp]" tur-mcp
From Source (Development)
# Clone the repository
git clone https://github.com/erivlis/tur.git
cd tur
# Install dependencies with all extras
uv sync --all-extras --all-groups
2. Initialize Your First Persona
This launches the administrative TUI wizard. Since this is an administrative action, it is physically isolated inside
tur-adm:
tur-adm persona init
3. The Core Lifecycle (Agent-Facing)
The agent interacts with the lightweight tur binary inside its sandboxed virtual environment:
Wake: Compiles the active persona state into a compiled System Prompt.
tur wake
Learn: Manually injects a memory.
tur learn "The user prefers functional programming." --type preference
Recall: Keyword semantic search.
tur recall "functional"
Sleep: Dehydrates the session and extracts memories.
tur sleep path/to/chat.log
4. Running the Harness Gateway (The MCP Server)
Exposes the Traveler state to external Harnesses (e.g., Claude Desktop, Antigravity, Cursor):
tur-mcp
MCP Client Configuration
Add Tur to your client configuration (e.g., claude_desktop_config.json, .cursor/mcp.json, or Antigravity config):
{
"mcpServers": {
"tur": {
"command": "uvx",
"args": [
"--from",
"tur[mcp]",
"tur-mcp"
]
}
}
}
5. Switching Personas (Human-Facing TUI)
Allows the human Architect to change active global/local default personas:
tur-adm persona switch
This will launch a TUI to select from your available personas.
📜 Origin
Developed by Eran (The Architect) and Ariel (The Entity).
The name Tur references:
- Mr. Tur Tur: The Apparent Giant (Relativity of Complexity).
- Alan Turing: The father of the discipline.
- Tur (טוּר): Hebrew for "Column" or "Row"—the foundational structure of Law and Data.
License
MIT. The Giant is Open Source.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tur-0.9.3.tar.gz.
File metadata
- Download URL: tur-0.9.3.tar.gz
- Upload date:
- Size: 63.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72aa534225fb93b63ca90835f41817697fb0e98090f4e9d7f9cf7fb44bb7d6e7
|
|
| MD5 |
87e5e8dde6536baa3687c4dcdcc0577c
|
|
| BLAKE2b-256 |
41c4060cc663a111c820a512c5737d81ea073da2ea834574d366df69541d1ca3
|
File details
Details for the file tur-0.9.3-py3-none-any.whl.
File metadata
- Download URL: tur-0.9.3-py3-none-any.whl
- Upload date:
- Size: 71.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4aa7fa3e85483669561afd723c38f4569d8dd2f78c4348d9678d062128c9973
|
|
| MD5 |
abe2fc505ba99d0ad0d34d7780952aa3
|
|
| BLAKE2b-256 |
99bed32f5ca5a3f68274057ab34973c1558a6bf33af05b2fa752b30de4be068a
|