For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
      • AstroFully-managed data operations, powered by Apache Airflow.
      • Astro Private CloudRun Airflow-as-a-service in your environment.
      • Professional ServicesExpert Airflow services for your enterprise's success.
    • Tools
      • Cosmos
      • Orbiter
      • CLI
      • AI SDK
      • Agents
      • Blueprint
      • UpdatesThe State of Airflow 2026See the insights from over 5,800 data practitioners in the full report. Download Now ➔
  • Customers
  • Docs
    • Insights
      • Blog
      • Webinars
      • Resource Library
      • Events
    • Education
      • Academy
      • What is Airflow?
  • Pricing
Get Started Free
    • Overview
        • Overview
        • Quickstart
        • Customize Otto
        • Upgrade Airflow with Otto
          • Tools
          • Skills
          • Memory
          • Permissions
          • Extensions
          • Settings
      • MCP servers
      • Toggle AI features
    • Book Office Hours

Product

  • Platform Overview
  • Astro
  • Astro Observe
  • Astro Private Cloud
  • Security & Trust
  • Pricing

Tools & Services

  • Cosmos
  • Docs
  • Professional Services
  • Product Updates

Use Cases

  • AI Ops
  • Data Observability
  • ETL/ELT
  • ML Ops
  • Operational Analytics
  • All Use Cases

Industries

  • Financial Services
  • Gaming
  • Retail
  • Manufacturing
  • Healthcare
  • All Industries

Resources

  • Academy
  • eBooks & Guides
  • Blog
  • Webinars
  • Events
  • The Data Flowcast Podcast
  • All Resources

Airflow

  • What is Airflow
  • Airflow on Astro
  • Airflow 3.0
  • Airflow Upgrades
  • Airflow Use Cases
  • Airflow 2.x End of Life

Company

  • Our Story
  • Customers
  • Newsroom
  • Careers
  • Contact

Support

  • Knowledge Base
  • Status
  • Contact Support
GitHubYouTubeLinkedInx
  • Legal
  • Privacy
  • Terms of Service
  • Consent Preferences

  • Do Not Sell or Share My Personal information
  • Limit the Use Of My Sensitive Personal Information

Apache Airflow®, Airflow, and the Airflow logo are trademarks of the Apache Software Foundation. Copyright © Astronomer 2026. All rights reserved.

LogoLogo
On this page
  • How memory works
  • How memories get created
  • From the current conversation with /remember
  • From history with /bootstrap
  • Manually
  • Autonomously during a session
  • Memory file format
  • When Otto does not write memory
  • Memory and team collaboration
AI featuresOttoReference

Otto memory

Edit this page
Built with
Labs
This feature is in Labs.

Otto’s memory system transforms it from an agent that starts fresh every session into a knowledgeable team member that remembers your environment, your conventions, and lessons learned from past interactions. Memory is stored locally as Markdown files split between your project repository and your home directory.

How memory works

Memory lives in two places: your project repository and your home directory.

your-project/ # Astro project root
└── .astro/
└── memory/ # Shared project memory (committed, team-visible)
├── MEMORY.md
└── conventions.md
~/ # Your home directory
└── .astro/
└── memory/
├── MEMORY.md # Local user memory (all projects, this computer)
├── preferences.md
└── <project-slug>/ # Local project memory (this project, this computer)
├── MEMORY.md
└── notes.md

Each location serves a different purpose:

  • Shared project memory (.astro/memory/): Conventions, architecture decisions, and environment details that should travel with the project. Committed to your repository so the whole team picks them up.
  • Local project memory (~/.astro/memory/<project-slug>/): Your personal notes for one specific project. Lives in your home directory and isn’t committed.
  • Local user memory (~/.astro/memory/): Preferences and patterns that apply to every project you work on. Lives in your home directory and isn’t committed.

At the start of every session, Otto loads MEMORY.md from each location. Other .md files are indexed by name so Otto knows they exist, but they’re read on demand rather than loaded upfront.

In addition to .astro/memory/, Otto reads AGENTS.md and CLAUDE.md files for context. Otto loads them from ~/.astro/otto/AGENTS.md or ~/.astro/otto/CLAUDE.md, then walks up from the current working directory to /. When both files exist in the same folder, Otto prioritizes AGENTS.md over CLAUDE.md.

How memories get created

Otto creates memory in several ways:

From the current conversation with /remember

Run /remember in an interactive session to have Otto review the conversation and generate memory files for the reusable learnings it identifies. Otto proposes the memories before writing them, and you approve or reject each one.

From history with /bootstrap

Run /bootstrap to seed shared project memory from your git history and available GitHub PR history (when the GitHub CLI is installed and authenticated). This is useful when you’re starting with Otto on an established project and want to capture existing team knowledge without building it up organically.

Manually

Platform teams can add Markdown files directly to .astro/memory/ to seed Otto with explicit constraints before organic memory accumulates. Upload files with conventions, approved operators, retry policies, and other standards, and add each file to MEMORY.md so Otto knows they exist.

For example:

.astro/memory/
MEMORY.md # Index of all memory files
conventions.md # Naming conventions, preferred patterns
approved-operators.md # Operators the team has approved for use
retry-policy.md # Standard retry configuration

Autonomously during a session

Otto can also write memory on its own when it detects something worth retaining, without you running /remember or /bootstrap. This happens when Otto:

  • Discovers a project convention not represented in the codebase.
  • Learns important environment facts such as versions, connections, or team structure.
  • Corrects a prior mistake and wants to avoid repeating it.

Memory file format

Each memory file is a Markdown file with the following structure:

1# <Title>
2
3### Source
4user-interaction | debugging-session | customer-call | documentation | experiment | code-review
5
6## Memory
7<concise learning — the core knowledge>
8
9## Context
10<when and why this was discovered — optional>
11
12## Evidence
13<concrete instances — grows over time as the memory is reinforced>

The MEMORY.md file in each folder serves as an index. Otto reads it at the start of every session to understand what memory files are available, and adds entries for new memories as they’re created.

When Otto does not write memory

Otto avoids writing memory for:

  • Information already in README.md, CLAUDE.md, or committed documentation.
  • Ephemeral task state or in-progress work.
  • Code patterns that are readable directly from source.

Memory and team collaboration

Because shared project memory lives in .astro/memory/ within your project repository, it follows your team’s standard Git workflow:

  1. Otto creates or updates a memory file during a session.
  2. You review the change in your Git diff.
  3. You commit and push the change.
  4. Other team members pull the update.
  5. In their next Otto session, the new memory is loaded automatically.

Local project memory and local user memory are scoped to you and aren’t shared with the team.