Agent memory that thinks

Give your agent a memory that lasts

Turn unstructured text, images, voice transcripts, and directories into a structured Markdown knowledge base — powered by any OpenAI-compatible LLM.

Runs with
OpenAI
OpenRouter
Ollama
Question
Answer
Note
Tag
Person

1 Ingest

Text, images, transcripts, VTT files, or entire directories.

2 Extract

LLM decomposes content into questions, answers, notes, tags, topics, and people.

3 Query

Search by tags or natural language and explore connections in the graph.

LLM-powered decomposition

Extracts meaning and structure using any OpenAI-compatible model you choose.

Obsidian-compatible Markdown

Everything is stored as plain Markdown files. Future-proof, portable, and yours.

Interactive knowledge graph

See how ideas, people, and topics connect in an intuitive visual graph.

Tag & text search

Hybrid search across tags, metadata, and natural language.

Image & transcript support

Ingest images (OCR), meeting transcripts, and VTT subtitle files with ease.

CLI + library + web demo

Use it your way: Dart library, cross-platform CLI, or the Flutter web demo.

Local LLM support / privacy-first

Run with Ollama locally. Your data stays on your machine — nothing leaves unless you choose.

Your knowledge stays yours.

Run entirely on your machine with Ollama, or bring your own API key for OpenAI, OpenRouter, or other providers. You're never locked in. You own your data.

Works offline No internet required
No data lock-in Use any provider
Private by default Your data, your rules

See connections,
not chaos

Our interactive graph helps you explore knowledge the way your mind works.

Question
Answer
Note
Tag / Topic
Person / Author
File / Source
%%{init: {'flowchart': {'curve': 'basis', 'nodeSpacing': 24, 'rankSpacing': 28, 'useMaxWidth': true}}}%%
flowchart LR
    A(("State management strategies?")):::question --> B(("flutter")):::tagNode
    B --> C(("architecture")):::tagNode
    C --> D(("We decided on Riverpod")):::answer
    D --> E(("Why Riverpod over Provider?")):::question
    E --> F(("Performance considerations")):::note
    F --> G(("Scalability & maintainability")):::note
    C --> H(("Alice")):::person
    C --> I(("Bob")):::person
    I --> J(("meeting.vtt\nMar 12, 2024")):::file

    classDef question fill:#7C3AED,stroke:#A78BFA,stroke-width:2px,color:#fff
    classDef answer fill:#0891B2,stroke:#67E8F9,stroke-width:2px,color:#fff
    classDef note fill:#DB2777,stroke:#F472B6,stroke-width:2px,color:#fff
    classDef tagNode fill:#14B8A6,stroke:#5EEAD4,stroke-width:2px,color:#fff
    classDef person fill:#4F46E5,stroke:#818CF8,stroke-width:2px,color:#fff
    classDef file fill:#475569,stroke:#94A3B8,stroke-width:2px,color:#fff
    linkStyle default stroke:#A78BFA,stroke-width:1px
        

Automate your memory pipeline

agent_memory
$ agent_memory process -i ./meeting.vtt -o kb
Ingested 1 file
Extracted 12 records (Q: 4, A: 5, Notes: 3)
$ agent_memory memory ask -q "What did we decide about state management?"
❯ We decided to use Riverpod for state management due to its testability, scalability, and developer experience.
$ agent_memory search-tags -o kb -t architecture
Found 8 results — q_0001, a_0002, n_0004, n_0007…
$ agent_memory memory list -o kb --type question --limit 3
q_0001 State management strategies?
q_0002 How do we handle offline sync?
q_0003 Performance optimisation goals?

Explore, search, and connect

Try the live demo right in your browser. Add records, search by tags or text, and watch the knowledge graph grow.

Open live demo
Flutter Agent Memory

Start building agent memory today

Open source. Local-first. Built for builders.