Metadata-Version: 2.4
Name: mindroom
Version: 2026.2.85
Summary: A universal interface for AI agents with persistent memory, where every conversation has a home
Project-URL: documentation, https://github.com/mindroom-ai/mindroom
Project-URL: homepage, https://github.com/mindroom-ai/mindroom
Project-URL: repository, https://github.com/mindroom-ai/mindroom
Author: mindroom team
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.12
Requires-Dist: agno[anthropic,google,ollama,openai]==2.4.7
Requires-Dist: anthropic>=0.70
Requires-Dist: cerebras-cloud-sdk>=1.46
Requires-Dist: chromadb>=1.0.15
Requires-Dist: cron-descriptor>=1.4.5
Requires-Dist: croniter>=6
Requires-Dist: diskcache>=5.6.3
Requires-Dist: fastapi[standard]>=0.116.1
Requires-Dist: google-genai
Requires-Dist: groq>=0.31
Requires-Dist: httpx>=0.27
Requires-Dist: humanize>=4.12.3
Requires-Dist: json5>=0.13
Requires-Dist: loguru>=0.7.3
Requires-Dist: markdown>=3.7
Requires-Dist: matrix-nio>=0.24
Requires-Dist: mcp[cli]>=1.12.4
Requires-Dist: mem0ai>=0.1.115
Requires-Dist: openai
Requires-Dist: pydantic>=2
Requires-Dist: pyjwt>=2.8
Requires-Dist: python-dotenv>=1
Requires-Dist: pyyaml>=6
Requires-Dist: rich
Requires-Dist: structlog>=24.1
Requires-Dist: tenacity>=9.1.2
Requires-Dist: typer>=0.16
Requires-Dist: uvicorn>=0.35
Requires-Dist: watchfiles>=1
Provides-Extra: agentql
Requires-Dist: agentql; extra == 'agentql'
Requires-Dist: playwright; extra == 'agentql'
Provides-Extra: airflow
Provides-Extra: apify
Requires-Dist: apify-client>=1.12.2; (platform_machine != 'aarch64') and extra == 'apify'
Provides-Extra: arxiv
Requires-Dist: arxiv; extra == 'arxiv'
Requires-Dist: pypdf; extra == 'arxiv'
Provides-Extra: aws-lambda
Requires-Dist: boto3>=1.40.8; extra == 'aws-lambda'
Provides-Extra: aws-ses
Requires-Dist: boto3>=1.40.8; extra == 'aws-ses'
Provides-Extra: baidusearch
Requires-Dist: baidusearch; extra == 'baidusearch'
Requires-Dist: pycountry; extra == 'baidusearch'
Provides-Extra: bitbucket
Requires-Dist: requests; extra == 'bitbucket'
Provides-Extra: brandfetch
Requires-Dist: httpx>=0.27; extra == 'brandfetch'
Provides-Extra: brightdata
Requires-Dist: requests; extra == 'brightdata'
Provides-Extra: browserbase
Requires-Dist: browserbase; extra == 'browserbase'
Requires-Dist: playwright; extra == 'browserbase'
Provides-Extra: cal-com
Requires-Dist: pytz; extra == 'cal-com'
Requires-Dist: requests; extra == 'cal-com'
Provides-Extra: calculator
Provides-Extra: cartesia
Requires-Dist: cartesia; extra == 'cartesia'
Provides-Extra: claude-agent
Requires-Dist: claude-agent-sdk>=0.1.35; extra == 'claude-agent'
Provides-Extra: clickup
Requires-Dist: requests; extra == 'clickup'
Provides-Extra: composio
Requires-Dist: composio-agno; extra == 'composio'
Provides-Extra: config-manager
Requires-Dist: pydantic>=2; extra == 'config-manager'
Requires-Dist: pyyaml>=6; extra == 'config-manager'
Provides-Extra: confluence
Requires-Dist: atlassian-python-api; extra == 'confluence'
Provides-Extra: crawl4ai
Requires-Dist: crawl4ai>=0.7.3; extra == 'crawl4ai'
Provides-Extra: csv
Requires-Dist: duckdb; extra == 'csv'
Provides-Extra: custom-api
Requires-Dist: requests; extra == 'custom-api'
Provides-Extra: dalle
Requires-Dist: openai; extra == 'dalle'
Provides-Extra: daytona
Requires-Dist: daytona; extra == 'daytona'
Provides-Extra: desi-vocal
Requires-Dist: requests; extra == 'desi-vocal'
Provides-Extra: discord
Requires-Dist: requests; extra == 'discord'
Provides-Extra: docker
Requires-Dist: docker; extra == 'docker'
Provides-Extra: duckdb
Requires-Dist: duckdb; extra == 'duckdb'
Provides-Extra: duckduckgo
Requires-Dist: ddgs; extra == 'duckduckgo'
Provides-Extra: e2b
Requires-Dist: e2b-code-interpreter; extra == 'e2b'
Provides-Extra: eleven-labs
Requires-Dist: elevenlabs; extra == 'eleven-labs'
Provides-Extra: email
Provides-Extra: exa
Requires-Dist: exa-py; extra == 'exa'
Provides-Extra: fal
Requires-Dist: fal-client; extra == 'fal'
Provides-Extra: file
Provides-Extra: file-generation
Requires-Dist: reportlab; extra == 'file-generation'
Provides-Extra: financial-datasets-api
Requires-Dist: requests; extra == 'financial-datasets-api'
Provides-Extra: firecrawl
Requires-Dist: firecrawl-py>=3; extra == 'firecrawl'
Provides-Extra: gemini
Requires-Dist: google-genai; extra == 'gemini'
Provides-Extra: giphy
Requires-Dist: httpx>=0.27; extra == 'giphy'
Provides-Extra: github
Requires-Dist: pygithub>=2.5; extra == 'github'
Provides-Extra: gmail
Requires-Dist: google-api-python-client>=2.178; extra == 'gmail'
Requires-Dist: google-auth-httplib2>=0.2; extra == 'gmail'
Requires-Dist: google-auth-oauthlib>=1.2.2; extra == 'gmail'
Requires-Dist: google-auth>=2.40.3; extra == 'gmail'
Provides-Extra: google-bigquery
Requires-Dist: google-cloud-bigquery; extra == 'google-bigquery'
Provides-Extra: google-calendar
Requires-Dist: google-api-python-client>=2.178; extra == 'google-calendar'
Requires-Dist: google-auth-httplib2>=0.2; extra == 'google-calendar'
Requires-Dist: google-auth-oauthlib>=1.2.2; extra == 'google-calendar'
Requires-Dist: google-auth>=2.40.3; extra == 'google-calendar'
Provides-Extra: google-maps
Requires-Dist: google-maps-places; extra == 'google-maps'
Requires-Dist: googlemaps; extra == 'google-maps'
Provides-Extra: google-sheets
Requires-Dist: google-api-python-client>=2.178; extra == 'google-sheets'
Requires-Dist: google-auth-httplib2>=0.2; extra == 'google-sheets'
Requires-Dist: google-auth-oauthlib>=1.2.2; extra == 'google-sheets'
Provides-Extra: googlesearch
Requires-Dist: ddgs; extra == 'googlesearch'
Provides-Extra: groq
Requires-Dist: groq>=0.31; extra == 'groq'
Provides-Extra: hackernews
Requires-Dist: httpx>=0.27; extra == 'hackernews'
Provides-Extra: homeassistant
Requires-Dist: httpx>=0.27; extra == 'homeassistant'
Provides-Extra: imdb
Provides-Extra: jina
Requires-Dist: httpx>=0.27; extra == 'jina'
Requires-Dist: pydantic>=2; extra == 'jina'
Provides-Extra: jira
Requires-Dist: jira>=3.10.5; extra == 'jira'
Provides-Extra: linear
Requires-Dist: requests; extra == 'linear'
Provides-Extra: linkup
Requires-Dist: linkup-sdk>=0.2.8; extra == 'linkup'
Provides-Extra: lumalabs
Requires-Dist: lumaai; extra == 'lumalabs'
Provides-Extra: mem0
Requires-Dist: mem0ai>=0.1.115; extra == 'mem0'
Provides-Extra: memory
Provides-Extra: modelslabs
Requires-Dist: requests; extra == 'modelslabs'
Provides-Extra: moviepy-video-tools
Requires-Dist: moviepy; extra == 'moviepy-video-tools'
Provides-Extra: neo4j
Requires-Dist: neo4j; extra == 'neo4j'
Provides-Extra: newspaper4k
Requires-Dist: lxml-html-clean; extra == 'newspaper4k'
Requires-Dist: newspaper4k; extra == 'newspaper4k'
Provides-Extra: notion
Requires-Dist: notion-client; extra == 'notion'
Provides-Extra: openai
Requires-Dist: openai; extra == 'openai'
Provides-Extra: openbb
Requires-Dist: openbb; extra == 'openbb'
Provides-Extra: openweather
Requires-Dist: requests; extra == 'openweather'
Provides-Extra: oxylabs
Requires-Dist: oxylabs; extra == 'oxylabs'
Provides-Extra: pandas
Requires-Dist: pandas>=2.2; extra == 'pandas'
Provides-Extra: postgres
Requires-Dist: psycopg[binary]; extra == 'postgres'
Provides-Extra: pubmed
Requires-Dist: httpx>=0.27; extra == 'pubmed'
Provides-Extra: python
Provides-Extra: reasoning
Provides-Extra: reddit
Requires-Dist: praw; extra == 'reddit'
Provides-Extra: redshift
Requires-Dist: redshift-connector; extra == 'redshift'
Provides-Extra: replicate
Requires-Dist: replicate>=1.0.7; extra == 'replicate'
Provides-Extra: resend
Requires-Dist: resend; extra == 'resend'
Provides-Extra: scheduler
Provides-Extra: scrapegraph
Requires-Dist: scrapegraph-py; extra == 'scrapegraph'
Provides-Extra: searxng
Provides-Extra: serpapi
Requires-Dist: google-search-results>=2.4.2; extra == 'serpapi'
Provides-Extra: serper
Requires-Dist: requests; extra == 'serper'
Provides-Extra: shell
Provides-Extra: shopify
Requires-Dist: httpx>=0.27; extra == 'shopify'
Provides-Extra: slack
Requires-Dist: slack-sdk; extra == 'slack'
Provides-Extra: sleep
Provides-Extra: spider
Requires-Dist: spider-client; extra == 'spider'
Provides-Extra: spotify
Requires-Dist: httpx>=0.27; extra == 'spotify'
Requires-Dist: spotipy>=2.25.1; extra == 'spotify'
Provides-Extra: sql
Requires-Dist: sqlalchemy; extra == 'sql'
Provides-Extra: supabase
Requires-Dist: supabase>=2.18.1; extra == 'supabase'
Provides-Extra: tavily
Requires-Dist: tavily-python; extra == 'tavily'
Provides-Extra: telegram
Requires-Dist: httpx>=0.27; extra == 'telegram'
Provides-Extra: todoist
Requires-Dist: todoist-api-python; extra == 'todoist'
Provides-Extra: trafilatura
Requires-Dist: trafilatura; extra == 'trafilatura'
Provides-Extra: trello
Requires-Dist: py-trello; extra == 'trello'
Provides-Extra: twilio
Requires-Dist: twilio; extra == 'twilio'
Provides-Extra: unsplash
Provides-Extra: visualization
Requires-Dist: matplotlib; extra == 'visualization'
Provides-Extra: web-browser-tools
Provides-Extra: webex
Requires-Dist: webexpythonsdk; extra == 'webex'
Provides-Extra: website
Requires-Dist: beautifulsoup4; extra == 'website'
Requires-Dist: httpx>=0.27; extra == 'website'
Provides-Extra: whatsapp
Requires-Dist: httpx>=0.27; extra == 'whatsapp'
Provides-Extra: wikipedia
Requires-Dist: wikipedia; extra == 'wikipedia'
Provides-Extra: x
Requires-Dist: tweepy; extra == 'x'
Provides-Extra: yfinance
Requires-Dist: yfinance; extra == 'yfinance'
Provides-Extra: youtube
Requires-Dist: youtube-transcript-api; extra == 'youtube'
Provides-Extra: zendesk
Requires-Dist: requests; extra == 'zendesk'
Provides-Extra: zep
Requires-Dist: zep-cloud>=3.3; extra == 'zep'
Provides-Extra: zoom
Requires-Dist: requests; extra == 'zoom'
Description-Content-Type: text/markdown

# mindroom

[![PyPI](https://img.shields.io/pypi/v/mindroom)](https://pypi.org/project/mindroom/)
[![Python](https://img.shields.io/pypi/pyversions/mindroom)](https://pypi.org/project/mindroom/)
[![Tests](https://img.shields.io/github/actions/workflow/status/mindroom-ai/mindroom/pytest.yml?label=tests)](https://github.com/mindroom-ai/mindroom/actions/workflows/pytest.yml)
[![Build](https://img.shields.io/github/actions/workflow/status/mindroom-ai/mindroom/build-mindroom.yml?label=build)](https://github.com/mindroom-ai/mindroom/actions/workflows/build-mindroom.yml)
[![Docs](https://img.shields.io/badge/docs-mindroom.chat-blue)](https://docs.mindroom.chat)
[![License](https://img.shields.io/github/license/mindroom-ai/mindroom)](https://github.com/mindroom-ai/mindroom/blob/main/LICENSE)
[![Downloads](https://img.shields.io/pypi/dm/mindroom)](https://pypi.org/project/mindroom/)
[![GitHub](https://img.shields.io/badge/github-mindroom--ai%2Fmindroom-blue?logo=github)](https://github.com/mindroom-ai/mindroom)

<img src="https://raw.githubusercontent.com/mindroom-ai/mindroom/main/frontend/public/logo-text.svg" alt="MindRoom Logo" align="right" width="150" />

**Your AI is trapped in apps. We set it free.**

AI agents that learn who you are shouldn't forget everything when you switch apps. MindRoom agents follow you everywhere—Slack, Telegram, Discord, WhatsApp—with persistent memory intact.

Deploy once on Matrix. Your agents now work in any chat platform via bridges. They can even visit your client's workspace or join your friend's group chat.

Self-host for complete control or use our encrypted service. Either way, your agents remember you and can collaborate across organizations.

## The Problem

Every AI app is a prison:
- ChatGPT knows your coding style... but can't join your team's Slack
- Claude understands your writing... but can't access your email
- GitHub Copilot helps with code... but can't see your project specs
- You teach each AI from scratch, over and over

Meanwhile, your human team collaborates across Slack, Discord, Telegram, and email daily. Why can't your AI?

## The Solution

MindRoom agents:
- **Live in Matrix** - A federated protocol like email
- **Work everywhere** - Via bridges to Slack, Telegram, Discord, WhatsApp, IRC, email
- **Remember everything** - Persistent memory across all platforms
- **Collaborate naturally** - Multiple agents working together in threads
- **Respect boundaries** - You control which agent sees what data

## Built on Proven Infrastructure

MindRoom leverages the Matrix protocol, a decade-old open standard with significant real-world adoption:

**Foundation**
- **10+ years** of development by the Matrix.org Foundation
- **€10M+** invested in protocol development
- **100+ developers** contributing to the core ecosystem
- **35+ million users** globally

**Enterprise Validation**
- **German Healthcare**: 150,000+ organizations using Ti-Messenger
- **French Government**: 5.5 million civil servants on Tchap
- **Military Adoption**: NATO, U.S. Space Force, and other defense organizations
- **GDPR Compliant**: Built for European privacy standards

**What This Means For You**

By building on Matrix, MindRoom inherits:
- Production-tested federation across organizations
- Military-grade E2E encryption (Olm/Megolm)
- Professional clients (Element, FluffyChat, Cinny)
- 50+ maintained bridges to other platforms
- Proven scale and reliability

This foundation allows MindRoom to focus entirely on agent orchestration and intelligence, rather than reimplementing communication infrastructure.

## See It In Action

```
Monday, in your Matrix room:
You: @assistant Remember our project uses Python 3.11 and FastAPI

Tuesday, in your team's Slack (via bridge):
Colleague: What Python version are we using?
You: @assistant can you help?
Assistant: [Joins from Matrix] We're using Python 3.11 with FastAPI

Wednesday, in client's Telegram (via bridge):
Client: Can your AI review our API spec?
You: @assistant please analyze this
Assistant: [Travels from your server] I'll review this against our FastAPI patterns...
```

One agent. Every platform. Continuous memory.

## The Magic Moment - Cross-Organization Collaboration

```
Thursday, your client asks in their Discord:
Client: Can our architect AI review this with your team?
You: Sure! @assistant please collaborate with them

Your Assistant: [Joins from your Matrix server]
Client's Architect AI: [Joins from their server]
Together: [They review architecture, sharing context from both organizations]
```

**Two AI agents from different companies collaborating.**
This is impossible with ChatGPT, Claude, or any other platform.

## But It Gets Better - Your Agents Work as a Team

```
Friday, planning next sprint:
You: @research @analyst @writer Create a competitive analysis report
Research: I'll gather data on our top 5 competitors...
Analyst: I'll identify strategic patterns and opportunities...
Writer: I'll compile everything into an executive summary...
[They work together, transparently, delivering a comprehensive report]
```

## Key Features

### 🧠 Dual Memory System
- **Agent Memory**: Each agent remembers conversations, preferences, and patterns across all platforms
- **Room Memory**: Contextual knowledge that stays within specific rooms (work projects, personal notes)

### 🤝 Multi-Agent Collaboration
```
You: @research @analyst @email Create weekly competitor analysis reports
Research: I'll gather competitor updates
Analyst: I'll identify strategic patterns
Email: I'll compile and send every Friday
[They work together, automatically, every week]
```

### 💬 Direct Messages (DMs)
- Agents respond naturally in 1:1 DMs without needing mentions
- Add more agents to existing DM rooms for collaborative private work
- Complete privacy separate from configured public rooms

### 🔐 Intelligent Trust Boundaries
- Route sensitive data to local Ollama models on your hardware
- Use GPT-5.2 for complex reasoning
- Send general queries to cost-effective cloud models
- You decide which AI sees what

### 🔌 100+ Integrations
Gmail, GitHub, Spotify, Home Assistant, Google Drive, Reddit, weather services, news APIs, financial data, and many more. Your agents can interact with all your tools.

### 📅 Automation & Scheduling
- Daily check-ins from your mindfulness agent
- Scheduled reports and summaries
- Event-driven workflows (conditional requests converted to polling schedules)
- Background tasks with human escalation

## Who This Is For

- **Teams using Matrix/Element** - Add AI to your existing secure infrastructure without migration
- **Open Source Projects** - Agents that remember all decisions and can visit contributor chats
- **Consultants & Agencies** - Your AI can securely join client workspaces
- **Privacy-Focused Organizations** - Self-host everything, own your data completely
- **Developers** - Build on our platform, contribute agents, extend functionality

## Quick Start

### Prerequisites
- Python 3.12+
- [uv](https://github.com/astral-sh/uv) for Python package management
- Node.js 20+ and [bun](https://bun.sh/) (optional, for web UI)

### Installation and starting

```bash
# Clone and install
git clone https://github.com/mindroom-ai/mindroom
cd mindroom
uv sync --all-extras
```

```bash
# Terminal 1: Start backend (agents + API)
uv run mindroom run

# Terminal 2: Start frontend (optional, for web UI)
./run-frontend.sh
```

The web interface will be available at http://localhost:3003

### First Steps

In any Matrix client (Element, FluffyChat, etc):
```
You: @mindroom_assistant What can you do?
Assistant: I can coordinate our team of specialized agents...

You: @mindroom_research @mindroom_analyst What are the latest AI breakthroughs?
[Agents collaborate to research and analyze]
```

## How Agents Work

### Agent Response Rules
Agents ONLY respond in threads (not main room). Within threads:

1. **Mentioned agents always respond** - Tag them to get their attention
2. **Single agent continues** - One agent in thread? It keeps responding
3. **Multiple agents collaborate** - They work together, not compete
4. **Smart routing** - System picks the best agent for new threads

### Available Commands

<!-- CODE:START -->
<!-- import sys -->
<!-- sys.path.insert(0, 'src') -->
<!-- from mindroom.commands import _get_command_entries -->
<!-- for entry in _get_command_entries(format_code=True): -->
<!--     print(entry) -->
<!-- CODE:END -->
<!-- OUTPUT:START -->
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
- `!help [topic]` - Get help
- `!schedule <task>` - Schedule a task
- `!list_schedules` - List scheduled tasks
- `!cancel_schedule <id>` - Cancel a scheduled task
- `!edit_schedule <id> <task>` - Edit an existing scheduled task
- `!widget [url]` - Add configuration widget
- `!config <operation>` - Manage configuration
- `!hi` - Show welcome message
- `!skill <name> [args]` - Run a skill by name

<!-- OUTPUT:END -->

## Note for Self-Hosters

This repository contains everything you need to self-host MindRoom. The `saas-platform/` directory contains infrastructure and code specific to running MindRoom as a hosted service and can be safely ignored by self-hosters.

## Configuration

### Basic Setup

1. Create `config.yaml` (for example):
```yaml
agents:
  assistant:
    display_name: Assistant
    role: A helpful AI assistant
    model: default
    rooms: [lobby]

models:
  default:
    provider: anthropic
    id: claude-sonnet-4-5-latest

defaults:
  markdown: true
```

2. Configure your Matrix homeserver and API keys (optional, defaults shown):
```bash
export MATRIX_HOMESERVER=https://your-matrix.server
export ANTHROPIC_API_KEY=your-key-here
# Optional: use a non-default config location
# export MINDROOM_CONFIG_PATH=/path/to/config.yaml
```

### Optional Advanced Configuration

```yaml
knowledge_bases:
  engineering_docs:
    path: ./knowledge_docs
    watch: true

agents:
  assistant:
    display_name: Assistant
    role: A helpful AI assistant
    model: default
    rooms: [lobby]
    knowledge_bases: [engineering_docs]

voice:
  enabled: true
  stt:
    provider: openai
    model: whisper-1

authorization:
  global_users: ["@alice:example.com"]
  room_permissions:
    "!exampleRoomId:example.com": ["@bob:example.com"]
  default_room_access: false
```

## Deployment Options

### 🏠 Self-Hosted
Complete control on your infrastructure:
```bash
# Using your existing Matrix server
MATRIX_HOMESERVER=https://your-matrix.server uv run mindroom run

# Or let MindRoom handle everything locally
uv run mindroom run
```

### ☁️ Our Hosted Service (Coming Soon)
Zero setup, enterprise security:
- End-to-end encrypted (we can't read your data)
- Automatic updates and scaling
- 99.9% uptime SLA
- Start free, scale as needed

### 🔀 Hybrid
Mix and match:
- Sensitive rooms on your server
- General rooms on our cloud
- Agents collaborate seamlessly across both

## Architecture

### Technical Stack
- **Matrix**: Any homeserver (Synapse, Conduit, Dendrite, etc.)
- **Agents**: Python with matrix-nio
- **AI Models**: OpenAI, Anthropic, Ollama, or any provider
- **Memory**: Mem0 + ChromaDB vector storage (persistent on disk)
- **UI**: Web widget + any Matrix client

## Philosophy

We believe AI should be:

1. **Persistent**: Your AI should remember and learn from every interaction
2. **Ubiquitous**: Available wherever you communicate
3. **Collaborative**: Multiple specialists working together
4. **Private**: You control where your data lives
5. **Natural**: Just chat—no complex interfaces

## Status

- ✅ **Production ready** with 1000+ commits
- ✅ **100+ integrations** working today
- ✅ **Multi-agent collaboration** with persistent memory
- ✅ **Federation** across organizations and platforms
- ✅ **Self-hosted & cloud** options available
- ✅ **Voice transcription** for Matrix voice messages
- ✅ **Text-to-speech tools** via OpenAI, Groq, ElevenLabs, and Cartesia
- 🚧 Mobile apps in development
- 🚧 Agent marketplace planned


## Contributing

We welcome contributions! See [CLAUDE.md](CLAUDE.md) for the current development workflow and quality checks.

From the developer of 10+ successful open source projects with thousands of users. MindRoom represents 1000+ commits of production-ready code, not a weekend experiment.

## License

- **Repository (except `saas-platform/`)**: [Apache License 2.0](LICENSE)
- **SaaS Platform** (`saas-platform/`): [Business Source License 1.1](saas-platform/LICENSE) (converts to Apache 2.0 on 2030-02-06)

## Acknowledgments

Built with:
- [Matrix](https://matrix.org/) - The federated communication protocol
- [Agno](https://agno.dev/) - AI agent framework
- [matrix-nio](https://github.com/poljar/matrix-nio) - Python Matrix client

---

**mindroom** - AI that follows you everywhere, remembers everything, and stays under your control.
