Skip to main content

AI agent knowledge management system using Wiki-based markdown storage

Project description

OutoWiki Documentation

OutoWiki is a wiki-based knowledge management system designed for AI agents. It provides a structured way to store, retrieve, and organize information that AI agents learn across interactions.

Overview

OutoWiki solves the problem of persistent memory for AI agents by organizing information in a familiar wiki structure. Instead of opaque databases, OutoWiki uses markdown documents organized in folders, making the knowledge human-readable and editable.

Wiki-Style Classification

OutoWiki follows Wikipedia/NamuWiki classification principles:

  • is-a Relationship - Determine "What is this?" not "Is this similar?"
  • Category Tree Navigation - Navigate hierarchical categories to find appropriate documents
  • No Similarity Matching - Use topic understanding, not keyword matching
  • Explicit Document Linking - Support [[Document Name]] syntax for direct connection

Key Features

  • Folder-Based Classification - Categories are folders, no preset categories forced
  • Dynamic Category Creation - Create new categories as needed
  • Category Tree Exploration - Navigate and explore category hierarchy
  • Required Title Validation - title is REQUIRED for all documents, auto-retry if missing
  • LLM-Based Processing - Keyword extraction, category matching, topic splitting all use LLM
  • Full Document Delivery - Entire document content delivered to LLM (no 500-character limit)
  • Section-Based Editing - Wikipedia-style section editing (append, prepend, replace)
  • Multi-Topic Splitting - Split content with multiple topics using LLM
  • Wikilink Support - Direct document connection via [[Document Name]] syntax

Architecture

┌─────────────────────────────────────────────────────────┐
│                      OutoWiki Facade                     │
│  (OutoWiki class - main entry point for all operations)  │
└─────────────────────┬───────────────────────────────────┘
                      │
         ┌────────────┼────────────┐
         │            │            │
    ┌────▼────┐  ┌────▼────┐  ┌────▼────┐
    │Recorder │  │Searcher │  │AgentLoop│
    │ Module  │  │ Module  │  │         │
    └────┬────┘  └────┬────┘  └────┬────┘
         │            │            │
    ┌────▼────────────▼────────────▼────┐
    │           LLM Provider            │
    │   (OpenAI or Anthropic)          │
    └──────────────────────────────────┘

The system has three main components:

  • Recorder: Processes new content using Wiki-style topic classification (is-a relationship), determines document placement, manages backlinks
  • Searcher: Finds relevant documents using semantic search and intent analysis
  • AgentLoop: Unified LLM agent with tool-calling and conversation history, manages multi-turn tool chaining

AgentLoop Architecture

OutoWiki uses a unified agent loop for LLM operations:

┌─────────────────────────────────────────────────────────┐
│                      AgentLoop                           │
│  (Manages conversation history and tool execution)       │
└─────────────────────┬───────────────────────────────────┘
                      │
         ┌────────────┼────────────┐
         │            │            │
    ┌────▼────┐  ┌────▼────┐  ┌────▼────┐
    │Wiki I/O │  │Reasoning│  │ Tool    │
    │ Tools   │  │ Tools   │  │Registry │
    └─────────┘  └─────────┘  └─────────┘

Key Benefits:

  • Conversation History: LLM sees previous results when planning
  • Tool Chaining: LLM automatically chains tool calls
  • Context Continuity: No redundant context injection
  • Automatic Progression: No user intervention needed

Example Flow:

result = agent_loop.run(
    user_message="Record this content to the wiki...",
    terminal_tools={"write_document"}
)
# LLM automatically: analyze → plan → generate_document → write_document

Wiki Structure

OutoWiki organizes knowledge as markdown files in a folder hierarchy. No preset categories are forced - the wiki starts empty and categories are created dynamically as needed:

wiki/                    # Initially empty
├── programming/         # Created when first programming document is recorded
│   └── mobile/
│       └── camera.md
├── users/               # Created when first user document is recorded
│   └── alice/
│       └── preferences/
│           └── theme.md
└── ...                  # Categories grow organically

Each folder represents a category. When a document is recorded, the system:

  1. Analyzes the content to determine its topic (is-a relationship)
  2. Explores the existing category tree
  3. Finds or creates the appropriate category folder
  4. Records the document in that category

Documents support backlinks using the [[Document Name]] syntax. When auto_backlinks is enabled, OutoWiki automatically updates related documents when new content references existing topics.

Quick Start

from outowiki import OutoWiki, WikiConfig

# Create configuration
config = WikiConfig(
    provider="openai",
    api_key="sk-...",        # Your OpenAI API key
    model="gpt-4",
    wiki_path="./my_wiki"    # Local wiki folder
)

# Initialize the wiki
wiki = OutoWiki(config)

# Record new information
result = wiki.record({
    "type": "conversation",
    "content": "User prefers Python for web development. Suggested Flask or Django."
})
print(f"Recorded: {result.success}")
print(f"Actions: {result.actions_taken}")

# Search for information
results = wiki.search("programming preferences")
print(f"Found: {results.paths}")

# Work with a specific document
doc = wiki.get_document("concepts/web-development.md")
print(f"Title: {doc.metadata.title}")
print(doc.content[:500])

Documentation

Getting Started

API Reference

Guides

License

Apache License 2.0 - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

outowiki-0.6.1.tar.gz (103.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

outowiki-0.6.1-py3-none-any.whl (61.8 kB view details)

Uploaded Python 3

File details

Details for the file outowiki-0.6.1.tar.gz.

File metadata

  • Download URL: outowiki-0.6.1.tar.gz
  • Upload date:
  • Size: 103.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for outowiki-0.6.1.tar.gz
Algorithm Hash digest
SHA256 43e9121fc2ed7601976fbeac7509e494859190335d48df63b2fdc28485df2253
MD5 ec0fbb53169d7b0dd18ff31d6f9b4823
BLAKE2b-256 1c406bf58acc716b35f00052e8328a0859d9fb38f454eaac9a5f54cb0fc2bed7

See more details on using hashes here.

Provenance

The following attestation bundles were made for outowiki-0.6.1.tar.gz:

Publisher: publish.yml on llaa33219/outowiki

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file outowiki-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: outowiki-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 61.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for outowiki-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d7a6b349f4f5b1a885b0107f26f3cb26370fa8a5d7d683f0f5ac45fae52cdcf3
MD5 ee7cff6c67ebc9ce6c1cd95637f94e3b
BLAKE2b-256 aa9c0e50bf2a0a1d61f2bbcb51807abb14f2c10fb3a1d9f906411b87bcbb1209

See more details on using hashes here.

Provenance

The following attestation bundles were made for outowiki-0.6.1-py3-none-any.whl:

Publisher: publish.yml on llaa33219/outowiki

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page