Skip to content

Latest commit

 

History

History
73 lines (56 loc) · 3.06 KB

File metadata and controls

73 lines (56 loc) · 3.06 KB

AGENTS.md — Project Context for AI Agents

Project Overview

Duragent — A durable, self-contained runtime for AI agents.

Sessions survive crashes. Agents are just files. One binary, zero dependencies.

Use it as a personal AI assistant, or as the foundation for agent-powered products.

Key Concepts

Concept Description
Session Durable conversation context; survives crashes/disconnects; attach/detach like tmux
on_disconnect continue (agent keeps working) or pause (waits for reconnect)
Core gateways CLI, HTTP REST, SSE — built into Duragent
Platform gateways Telegram, Discord — subprocess plugins via Gateway Protocol
Tools bash, CLI tools, web search/fetch, scheduled tasks, background processes
Skills Modular Markdown-based capabilities with frontmatter metadata
Memory Per-agent recall/remember/reflect + shared world knowledge
Context management Token budgeting, history truncation, priority-based rendering
Sandbox Trust mode (no isolation)
Duragent Format YAML + Markdown agent definitions

Planned

  • Sandbox isolation: bubblewrap (Linux), Docker (cross-platform)
  • MCP tool integration
  • Structured logging / metrics (OpenTelemetry)

See Project Status for the full roadmap.

Strategic Documents

Tech Stack

  • Rust 2024 Edition
  • HTTP: Axum
  • Streaming: SSE
  • Config/spec: YAML (structured) + Markdown (prose)
  • Persistence: JSONL (events), JSON (snapshots), Markdown (prose)
  • Tool ecosystem: built-in, CLI tools, dynamic discovery from tools/ directories
  • Sandbox: trust mode

Code Conventions

  • Error handling: Use anyhow for application errors, thiserror for library errors
  • Async: Tokio runtime, async traits via async_trait
  • Config: serde for YAML/JSON, environment variables via ${VAR} syntax
  • Logging: tracing crate with structured spans
  • Tests: Unit tests inline, integration tests in tests/

Release Protocol

  1. Update Cargo.toml — bump version = "0.x.0"
  2. Update CHANGELOG.md:
    • Move items from [Unreleased] to new [0.x.0] - YYYY-MM-DD section
    • Add comparison link at bottom
  3. Update PROJECT_STATUS.md — mark milestone complete, update recent accomplishments
  4. Commitgit commit -m "Release v0.x.0"
  5. Taggit tag v0.x.0
  6. Pushgit push && git push --tags