Skip to content

Repository files navigation

🌿 arandu

"Knowledge" in Guarani — your AI-powered personal knowledge workspace.

Drop your notes, transcriptions, and documents — arandu turns them into a structured, searchable wiki you can chat with.

License: MIT Node.js Next.js Powered by Claude PRs Welcome


What is arandu?

arandu is a self-hosted web app that acts as your personal knowledge assistant. You feed it raw content — meeting transcriptions, documents, notes, decisions — and it automatically builds and maintains a structured wiki. Then you can chat with it, ask questions, and get answers grounded in your own knowledge base.

No cloud sync. No subscriptions. Your data stays local.

The entire wiki management philosophy is defined in LLM-WIKI.md — the instruction set that guides the LLM on how to organize, structure, and evolve your knowledge base. Read it to understand the core idea.


Quick Start

Requires: Node.js 18+ and an Anthropic API key (or Claude Code CLI)

npx arandu ./my-project
cd my-project
npm run setup      # install deps + build (first time only)
npm start

Open http://localhost:3000 — that's it.

The npx command scaffolds a new workspace interactively, asking you for:

  • Project name
  • LLM provider (claude-code, claude, or openai)
  • Knowledge spaces (e.g. work, personal, research)
  • Document categories (e.g. docs, transcriptions, decisions)

Features

Feature Description
📚 Wiki Auto-generated markdown wiki organized by space, with customizable folders and categories
💬 Chat Multi-turn Q&A over your wiki — ask anything, get answers with context. Save insights as raw files.
📥 Ingest Drop a raw file → the LLM reads it and updates the wiki automatically. Background processing with progress tracking.
🔄 Re-ingest Re-process any wiki page from its original source files
🔍 Lint LLM reviews wiki pages for quality, broken links, and missing cross-references
🕸️ Graph Visual knowledge graph showing connections between wiki pages
🔀 Git Track changes to your wiki with built-in git diff view, AI-generated commit messages
⚙️ Settings Switch LLM provider and model, manage spaces and categories, customize wiki folders — all from the UI

How it works

raw/                          wiki/
├── work/                     ├── work/
│   ├── transcriptions/       │   ├── topics/
│   │   └── team-standup-     │   │   ├── api-design.md
│   │      2026-05-12.md ──►  │   │   └── architecture.md
│   └── docs/                 │   ├── people/
│       └── doc-arch-         │   │   └── john-doe.md
│          2026-05-10.md      │   └── decisions/
│                             │       └── use-nextjs.md
└── personal/                 │
    └── notes/                └── personal/
        └── note-idea-            └── topics/
           2026-05-11.md              └── idea.md
  1. Drop raw files into raw/<space>/<category>/ (or use the Add File page in the UI)
  2. Ingest — the LLM reads the file and updates relevant wiki pages
  3. Chat — ask questions, get answers grounded in your wiki
  4. Lint — the LLM reviews wiki pages for quality and consistency

LLM Providers

Configure via the Settings page in the UI or by editing config/app.json:

Provider How to set up
Claude Code CLI (recommended) npm install -g @anthropic-ai/claude-code then claude login
Anthropic SDK Set ANTHROPIC_API_KEY in config/secrets.json or ui/.env.local
OpenAI (coming soon) Set OPENAI_API_KEY in config/secrets.json or ui/.env.local

config/secrets.json is gitignored — your API keys are safe.


Concepts

Understanding these three concepts is all you need to get started:

🗂️ Spaces

A space is a top-level knowledge area — a domain, team, project, or context you want to track separately.

Examples:
  work        → everything related to your job
  personal    → personal notes and ideas
  research    → a specific research topic
  acme-corp   → a client or company you follow

Each space has its own folder in raw/ and its own wiki section. You can have as many spaces as you want. Spaces are configured centrally in config/app.json.

Spaces also scope your chat. When chatting, you can select which spaces the LLM should search — so you can ask "what did we decide about the API?" scoped only to work, without noise from personal or research.

📁 Categories

A category defines the type of document within a space. Categories tell arandu how to process and weight the content.

Examples:
  transcription  → meeting recordings, interviews
  doc            → reference documents, specs, articles
  note           → quick thoughts, ideas, observations
  decision       → architectural or strategic decisions

Categories are fully customizable — you define them when running npx arandu, and can add or edit them later in config/app.json or via the Settings UI. Each category can have ingest_instructions that tell the LLM what to extract.

📄 Wiki pages

The wiki is the output — automatically generated and maintained by the LLM. It's organized by space and folder (e.g. wiki/work/topics/, wiki/work/people/). Each page is a plain markdown file with YAML frontmatter.

You never edit the wiki manually — you ingest raw files and the LLM keeps the wiki up to date.


The hierarchy

Space (work)
  └── Category (transcriptions)
        └── Raw file (transcription-standup-2026-05-12.md)
                          ↓ ingest
              Wiki pages updated automatically
              (work/topics/api-design.md, work/people/john.md, ...)

Workspace structure

After running npx arandu, your project looks like this:

my-project/
├── raw/                  # Drop your source files here
│   └── <space>/          # e.g. work/, personal/
│       └── <category>/   # e.g. transcriptions/, docs/
├── wiki/                 # Auto-generated wiki (commit this!)
│   └── <space>/          # e.g. work/, personal/
│       └── <folder>/     # e.g. topics/, people/, decisions/
├── config/
│   ├── app.json          # Project config: spaces, categories, wiki folders, LLM settings
│   ├── secrets.json      # API keys (gitignored)
│   ├── prompts/          # Customizable LLM prompts
│   └── templates/        # Document templates per category
├── .arandu/              # UI source bundle (don't edit — refresh with `arandu upgrade`)
└── package.json          # Proxies to .arandu/ (setup, start, build)

Raw file naming convention

<category>-<slug>-YYYY-MM-DD.md

Examples:
transcription-team-standup-2026-05-12.md
doc-architecture-overview-2026-05-10.md
note-quick-idea-2026-05-11.md
decision-use-nextjs-2026-05-09.md

Files created through the UI (Add File, Chat Save) follow this convention automatically.


Roadmap

See @todo/FUTURE.md for what's coming:

  • 🖼️ Assets Manager — embedded images and file attachments in wiki pages
  • 📄 Multi-format Ingest — PDF and image ingestion (OCR)
  • ⚙️ More providers — OpenAI, Ollama, OpenRouter
  • 🔗 Confluence Extension — import and sync Confluence pages
  • 🏠 Hosting — externally hosted wikis with app-managed git
  • 📦 Vaults — mount external arandu projects as path references
  • 🖥️ Tauri Desktop — native desktop app with Node.js sidecar

Contributing

See CONTRIBUTING.md for architecture details, API reference, and how to add new LLM providers.


License

MIT — use it, fork it, build on it.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages