{"id":47306350,"url":"https://github.com/memex-lab/memex","last_synced_at":"2026-06-09T22:00:42.746Z","repository":{"id":344103987,"uuid":"1178924852","full_name":"memex-lab/memex","owner":"memex-lab","description":"Open-source, local-first AI journal app for iOS and Android. Capture text, photos, and voice — AI agents organize them into timeline cards and insights. Your data stays on your device. Bring your own LLM (OpenAI, Claude, Gemini, Ollama, and more).","archived":false,"fork":false,"pushed_at":"2026-06-08T04:59:11.000Z","size":55434,"stargazers_count":391,"open_issues_count":29,"forks_count":34,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-06-08T05:20:40.909Z","etag":null,"topics":["ai-assistant","ai-companion","ai-diary","ai-journal","assistant-app","journal-app","journaling","journaling-app","knowledge-management","life-logging","local-agent","local-first","personal-knowledge-management","personal-knowledge-management-system","pkm","privacy","skills"],"latest_commit_sha":null,"homepage":"https://memexlab.ai","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/memex-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap/github-project.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-11T14:04:59.000Z","updated_at":"2026-06-08T04:21:54.000Z","dependencies_parsed_at":"2026-05-07T05:01:28.070Z","dependency_job_id":null,"html_url":"https://github.com/memex-lab/memex","commit_stats":null,"previous_names":["memex-lab/memex"],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/memex-lab/memex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memex-lab%2Fmemex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memex-lab%2Fmemex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memex-lab%2Fmemex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memex-lab%2Fmemex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/memex-lab","download_url":"https://codeload.github.com/memex-lab/memex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memex-lab%2Fmemex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34127345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-assistant","ai-companion","ai-diary","ai-journal","assistant-app","journal-app","journaling","journaling-app","knowledge-management","life-logging","local-agent","local-first","personal-knowledge-management","personal-knowledge-management-system","pkm","privacy","skills"],"created_at":"2026-03-17T08:24:17.368Z","updated_at":"2026-06-09T22:00:42.710Z","avatar_url":"https://github.com/memex-lab.png","language":"Dart","funding_links":[],"categories":["Uncategorized","💡 Real-World Examples"],"sub_categories":["Uncategorized","Example Applications"],"readme":"\u003cp align=\"center\"\u003e\n    \u003cpicture\u003e\n          \u003cimg src=\"brand.png\" /\u003e\n    \u003c/picture\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  An open-source, local-first AI journal. Not for writing daily entries — for capturing life in fragments and letting AI organize them.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e | \u003ca href=\"README_CN.md\"\u003e简体中文\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/memex-lab/memex/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/memex-lab/memex?style=flat-square\u0026label=release\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-GPL--3.0-blue?style=flat-square\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/memex-lab/memex/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/memex-lab/memex?style=flat-square\u0026color=f5a623\" alt=\"Stars\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.memexlab.ai/\"\u003eWebsite\u003c/a\u003e ·\n  \u003ca href=\"https://apps.apple.com/app/memexai/id6760325170\"\u003eApp Store\u003c/a\u003e ·\n  \u003ca href=\"https://play.google.com/store/apps/details?id=com.memexlab.memex\"\u003eGoogle Play\u003c/a\u003e ·\n  \u003ca href=\"https://discord.gg/TJGpXwn85F\"\u003eDiscord\u003c/a\u003e\n\u003c/p\u003e\n\n\n## What is Memex?\n\nMemex is an open-source, local-first AI journal for iOS and Android. It takes a different approach from traditional journaling apps — instead of asking you to sit down and write polished entries, Memex lets you capture life in fragments (text, photos, voice) and uses a multi-agent AI system to organize them into structured cards, builds your knowledge base, discovers insights, and provides companionship through AI characters.\n\n**What \"local-first\" means here:** Your records, cards, and knowledge all stay on your device. There is no Memex account and no Memex server storing your journal. You bring your own LLM provider (OpenAI, Claude, Gemini, etc.), and your prompts go directly from your phone to that provider — we never see your data.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/e5fb3ab6-ff99-4397-9018-386c9f90f5ee\" width=\"300\" /\u003e\n\u003c/div\u003e\n\n\u003e [!IMPORTANT]\n\u003e **Star Us** — you'll get notified of every new release on GitHub ⭐\n\u003e\n\u003e [![Star Us](https://github.com/user-attachments/assets/5af4e4ac-f6dd-4f51-aec7-3c14c781f651)](https://github.com/memex-lab/memex)\n\n## Features\n\n### 🤖 AI-Powered Organization\n- Multi-agent architecture: each agent handles a specific domain (recording organization, card generation, insights, comments, memory summarization, media analysis, companion chat, schedule aggregation)\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/1117efb2-e52d-465f-bf66-b21aa323b942\" width=\"800\" /\u003e\n\u003c/div\u003e\n\n- Automatically generates the most fitting card for each type of record:\n  - Life \u0026 productivity (task, routine, event, duration, progress) — record todos, habits, schedules and goals\n  - Knowledge \u0026 media (article, snippet, quote, link, conversation) — capture notes, references and dialogues\n  - People \u0026 places (person, place) — record contacts and locations with map preview\n  - Data \u0026 metrics (metric, rating, transaction, spec sheet) — record measurements, reviews and expenses\n  - Visual (gallery) — preserve moments through photos\n\nhttps://github.com/user-attachments/assets/4da8225e-945c-474c-8540-dc4d7af64a28\n\n- Auto-tagging, entity extraction, and cross-reference linking\n- Conversational AI assistant for discussing any card or topic\n\n### 💡 Knowledge \u0026 Insights\n- P.A.R.A-based knowledge organization (Projects, Areas, Resources, Archives)\n- Insight cards that surface connections across records:\n  - Charts (trend, bar, radar, bubble, composition, progress ring) — visualize patterns, distributions and goal progress over time\n  - Narrative (highlight, contrast, summary) — surface key conclusions, before/after comparisons, and periodic reviews\n  - Spatial \u0026 temporal (map, route, timeline) — reconstruct where and when things happened\n  - Gallery — visual memory from your photos\n\nhttps://github.com/user-attachments/assets/5048a9b1-47b2-462a-99f3-6a178e183861\n\n### 🤝 AI Companion\n- Create AI characters with unique personalities that accompany your journaling\n- **Auto-commentary**: Characters react to your new timeline cards — like a friend who's always paying attention\n- **1v1 chat**: Have real conversations with your character, who remembers your life context from cards and knowledge\n- **Persistent memory**: Characters maintain long-term memory across both comment and chat scenes — they grow with you\n- **SillyTavern compatible**: Import character cards (V2 JSON + PNG) with persona, world book, and example dialogues\n\n### 📝 Pure Text \u0026 Data Freedom\n- **Effortless Archiving**: After AI organization, all your records naturally settle into a series of interconnected Markdown files, making one-click diary and document archiving a breeze.\n- **Evolve Alongside AI**: Why Markdown? Because as AI capabilities rapidly advance, only the purest text records can bridge the gap of time and truly keep pace with its evolution. As LLM models strengthen, these simple records will reliably unlock entirely new interactive experiences and profound insights for you in the future.\n- **Absolute Freedom to Leave**: Zero vendor lock-in. If you ever feel our product no longer meets your expectations, you can one-click export all your records as standard Markdown files and migrate seamlessly to any note-taking app at zero cost.\n\n### 🔒 Privacy \u0026 Local-First\n- All data stored locally (filesystem + SQLite)\n- App lock with biometric authentication\n- No cloud dependency — your data never leaves your device\n\n### 📂 Storage \u0026 Backup\n- Supports iCloud Drive, Device storage (custom folder) and App storage\n- One-tap full backup / restore\n\n### 🔗 Multi-LLM Provider Support\n\n| Provider | API Type | Notes |\n|----------|----------|-------|\n| Google Gemini | Gemini API | gemini-3.1-pro-preview, gemini-3-flash-preview, etc. |\n| Google Gemini | OAuth (no API key required) | Sign in with Google account. Unofficial — use at your own risk |\n| OpenAI | Chat Completions / Responses API | GPT-5.4, etc. |\n| OpenAI | OAuth (no API key required) | Sign in with OpenAI account. Unofficial — use at your own risk |\n| Anthropic Claude | Claude API | Direct API access |\n| AWS Bedrock | Bedrock Claude | For AWS users |\n| Kimi (Moonshot) | OpenAI-compatible | kimi-k2.5, kimi-k2, etc. |\n| Aliyun (Qwen) | OpenAI-compatible | qwen3.5-plus, qwen-max, etc. |\n| Volcengine (Doubao) | OpenAI-compatible | doubao-seed-1-8, doubao-1.5-pro, etc. |\n| Zhipu GLM | OpenAI-compatible | GLM-4.7, GLM-4-Plus |\n| MiniMax | Anthropic-compatible | MiniMax-M2.5, MiniMax-M1 |\n| Xiaomi MIMO | Anthropic-compatible | MiMo-7B-RL |\n| OpenRouter | OpenAI-compatible | Access multiple providers via one API |\n| Ollama | OpenAI-compatible (local) | Run models locally on your device |\n\n## Install\n- **iOS**: Download on the [App Store](https://apps.apple.com/app/memexai/id6760325170)\n- **iOS (China)**: Download on the [App Store](https://apps.apple.com/cn/app/memexai%E5%A6%99%E8%AE%B0/id6761462644)\n- **Android**: Download on [Google Play](https://play.google.com/store/apps/details?id=com.memexlab.memex)\n- **Early Access (Android APK)**: You can also download the latest APK directly from [GitHub Releases](https://github.com/memex-lab/memex/releases).\n- **Build from Source**: [Compile and install from source](#development).\n\n### Configure LLM\n\nMemex requires an LLM API key to power its AI features. On first launch:\n\n1. Tap the avatar icon → Model Configuration\n2. Select your provider (Gemini / OpenAI / Claude / etc.)\n3. Enter your API key and base URL\n4. Each agent can be configured with a different model independently\n\n### Configure Location Context\n\nMemex can optionally attach your current city, district, and neighborhood context to agent conversations. This uses device GPS only; IP-based location is not used.\n\n1. Open Personal center → Settings → Location.\n2. Turn on \"Attach current location to chat\".\n3. Choose a reverse geocoding provider:\n   - OpenStreetMap / Nominatim works without an API key.\n   - Amap requires an API key.\n4. To use Amap, create an application in the [Amap Open Platform](https://lbs.amap.com/), enable the Web Service API, copy the key, and paste it into the Amap API Key field.\n5. Choose the context granularity and freshness window.\n\nFor local live tests of Amap reverse geocoding, pass the key through an environment variable instead of committing it:\n\n```bash\nAMAP_GEOCODING_TEST_KEY=your_key flutter test test/data/services/geocoding_service_test.dart\n```\n\n## 🧩 Custom Agent System\n\nMemex isn't just a recording app — it's a platform that lets you build your own AI agents on your phone.\n\nEvery built-in agent in Memex (knowledge extraction, card generation, insight discovery…) runs on the same custom agent infrastructure, and that infrastructure is fully open to you. That means you can create agents with the same capabilities as the built-in ones.\n\n### What You Can Build\n\n- 🎯 **Create agents freely** — Give it a name, pick a host type (Pure mode), and a new agent is ready to go.\n- ⚡ **Event-driven triggers** — Choose when your agent activates: on user input, after knowledge extraction, on card creation, on insight generation, or any system event.\n- 🧠 **Per-agent LLM configuration** — Each agent can use a different model.\n- 📝 **Custom system prompts** — Shape your agent's personality, expertise, and output format with a custom system prompt.\n- 📂 **Skill** — Memex adopts the open [Agent Skills](https://agentskills.io) standard. Each agent reads its behavior from a `SKILL.md` file — a folder of instructions, scripts, and resources that agents discover and use on demand.\n- 🗂️ **Working directory** — Each agent can be configured with its own workspace. File reads, writes, and listings are scoped to that directory.\n- 🚀 **JavaScript execution** — Skills can run JavaScript code, including `fetch()` for HTTP requests. Call external APIs, transform data, scrape web content — all running locally on your device.\n- 🔗 **Inter-agent dependency chains** — Define execution order with `dependsOn` to build complex workflows. Agent B waits for Agent A to finish before it starts.\n- 🔄 **Sync \u0026 async execution modes** — Run agents synchronously (inline, blocking) or asynchronously (queued as background tasks) depending on your workflow needs.\n- 🔁 **Auto-retry with configurable limits** — Async agents automatically retry on failure, with a configurable max retry count.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/8391695f-f4a3-4124-b40c-e4a944d355fb\" width=\"800\" /\u003e\n  \u003cp\u003e\u003cem\u003eCustom Agent System\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\nEvery agent you create is a first-class citizen — it plugs into the same event bus, uses the same tool system, and has the same capabilities as the built-in agents. The only limit is your imagination.\n\n\u003e 💡 **Learn more about the Skill format**: [Agent Skills](https://agentskills.io) is an open standard originally developed by Anthropic for packaging agent capabilities. Visit the site to understand how to write SKILL.md files and design agent behaviors.\n\n## Community\n\nMemex welcomes bug reports, feature ideas, docs improvements, localization, provider adapters, and focused code contributions. Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a large PR.\n\nOpening an issue helps us understand demand, but it does not guarantee implementation.\n\n## Roadmap\n\n- [ ] Video and file attachments\n- [ ] Editable Memory — manually curate and refine memory entries\n- [ ] Scheduled insight refresh — periodically re-analyze records for new patterns\n- [ ] Agent Soul — personalize agent behavior and personality\n- [ ] Customization — choose your own knowledge methodology, tagging rules, chat personas, and card styles\n- [ ] Extensible data sources \u0026 triggers — freely extend input sources and trigger conditions\n- [ ] Extension Market \u0026 Plugin Architecture — a cloud registry for agents, UI card templates, and persona configs with one-tap install and hot-reload\n\n## Development\n\n\u003cdetails\u003e\n\u003csummary\u003eBuild from source\u003c/summary\u003e\n\n### Prerequisites\n\n- Flutter SDK ≥ 3.6.0\n- Xcode (for iOS)\n- Android Studio (for Android)\n\n### Setup\n\n```bash\ngit clone https://github.com/memex-lab/memex.git\ncd memex\nflutter pub get\n```\n\nFor iOS:\n\n```bash\ncd ios \u0026\u0026 pod install \u0026\u0026 cd ..\n```\n\n### Run\n\n```bash\nflutter run --flavor globalDev\n```\n\nFor Android local development, prefer `globalDev` / `cnDev`; they use isolated package IDs and app data. `global` / `cn` are Stable builds, and `globalEarly` / `cnEarly` are Android Early builds.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eArchitecture\u003c/summary\u003e\n\n### Tech Stack\n\n| Layer | Technology |\n|-------|-----------|\n| Framework | Flutter (Dart ≥ 3.6) |\n| Platforms | iOS, Android |\n| Database | Drift (SQLite) |\n| State Management | Provider + MVVM |\n| LLM Providers | Gemini, OpenAI, Claude, Bedrock, Kimi, Qwen, Doubao, GLM, MiniMax, MIMO, OpenRouter, Ollama |\n| Agent Framework | dart_agent_core |\n\n### Project Structure\n\n```\nlib/\n├── agent/          # Multi-agent system\n│   ├── pkm_agent/        # Personal knowledge management\n│   ├── card_agent/       # Timeline card generation\n│   ├── insight_agent/    # Cross-record insight discovery\n│   ├── comment_agent/    # AI commentary\n│   ├── memory_agent/     # Memory summarization\n│   ├── persona_agent/    # User profile modeling\n│   ├── super_agent/      # Orchestrator agent\n│   └── skills/           # Composable agent skills\n├── data/           # Repositories \u0026 services\n├── db/             # Drift database schema\n├── domain/         # Domain models\n├── l10n/           # i18n (English, Chinese)\n├── llm_client/     # LLM client abstraction layer\n├── ui/             # Presentation layer (MVVM)\n└── utils/          # Shared utilities\n```\n\n### Data Flow\n\n```\nUser Input (text/image/voice)\n    ↓\nInput Processing \u0026 Asset Analysis (ML Kit)\n    ↓\nPKM Agent → Knowledge extraction \u0026 linking\n    ↓\nCard Agent → Structured timeline card\n    ↓\nInsight Agent → Cross-record pattern discovery\n    ↓\nLocal Storage (filesystem + SQLite)\n```\n\n\u003c/details\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/78f49de7-0f0d-44a8-9710-40bf7da970d1\" width=\"800\" /\u003e\n  \u003cp\u003e\u003cem\u003eArchitecture Overview\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## Contributing\n\nContributions are welcome. Please open an issue first to discuss what you would like to change.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## Star History\n\n\u003cdiv align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource\n      media=\"(prefers-color-scheme: dark)\"\n      srcset=\"https://api.star-history.com/svg?repos=memex-lab/memex\u0026type=Date\u0026theme=dark\"\n    /\u003e\n    \u003csource\n      media=\"(prefers-color-scheme: light)\"\n      srcset=\"https://api.star-history.com/svg?repos=memex-lab/memex\u0026type=Date\"\n    /\u003e\n    \u003cimg src=\"https://api.star-history.com/svg?repos=memex-lab/memex\u0026type=Date\" alt=\"Star History Chart\" /\u003e\n  \u003c/picture\u003e\n\u003c/div\u003e\n\n## License\n\nThis project is licensed under the GPL-3.0 License — see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemex-lab%2Fmemex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmemex-lab%2Fmemex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemex-lab%2Fmemex/lists"}