Show HN: Open-source AI shadow that runs on your machine and acts as you NanoNets released Ami, an open-source AI agent that runs locally on a user's machine and acts as a personal clone by connecting to apps, data, and tools via personal tokens. The agent maintains a live to-do list, learns user behavior, and executes busy work autonomously while keeping all data stored locally under ~/.ami/ with SQLite and markdown memory. Ami requires Node ≥ 20 and uses Claude API for triage and task execution, with features including meeting prep, on-device transcription, and a context graph memory that improves over time. ami-product-video.mp4 Ami is a local agent harness that acts as your clone, not a separate co-worker. It connects to apps, data, repositories, tools with your personal tokens, maintains a live to-do list, learns how you do tasks, and executes the "busy work" tasks on your behalf. It contructs a context graph memory of you and updates entities, relationships, feedback, decisions, writing style, to get more autonomous the more you use it. Ami runs on your machine. Data lives under ~/.ami/ SQLite + markdown memory . Nothing is shared with your org. Ami has exactly the access you have, i.e., it can only reach what you can reach. And nothing ships or gets sent without your click. The only prerequisite is Node ≥ 20. git clone https://github.com/NanoNets/ami.git && cd ami ./ami ./ami bootstraps everything on first run. - It installs dependencies pnpm via corepack - builds the console and starts the server Open http://localhost:4141 http://localhost:4141 and walk through onboarding. Paste your Claude API key and connect tools using personal tokens. Both are stored only on this machine. ./ami update pull the latest, reinstall, rebuild ./ami build force-rebuild the console Optional extras, install if you want the matching feature: — coding tasks need it to open PRs gh CLI brew install gh — a local meeting recorder with on-device transcription ffmpeg + whisper-cpp brew install ffmpeg whisper-cpp | Page | What it does | |---|---| Home | A homescreen with to-dos and meetings | To-do | A universal list of to-dos from every connected tool | Chat | A copilot chat with the same tool surface as to-do runs. You can ask questions, fire off work, create to-dos, update memory | Agents | A page to create agents that run on a schedule | History | An archive of past to-dos | Memory | A visualization of the current memory as a context graph | Settings | Connectors, models, knobs, usage data | Global search and notifications live in the header navbar. Ingest — a poller pulls new mentions, DMs, emails, invites, notifications through each connector using your personal tokens / API keys. Triage — a Claude call classifies each signal as task / FYI / ignore with a due date. Entities and relationships flow into the knowledge base. Your feedback corrections, dismissals, overrides become decision traces in the knowledge base that steer future triage. Act — each to-do item has five actions: Plan — explores read-only and proposes an editable plan. Start — runs the task in an isolated Claude Agent SDK session. Resolve — indicates you did it yourself and updates knowledge base Dismiss / Snooze — dismissals discourages future triage of similar tasks, snoozed tasks return tomorrow. Review — deliverables PR link, doc, event, meeting link land on the task page along with a drafted reply. Ami never sends anything itself. You edit/approve, then it posts to the originating Slack thread / email thread from your account. Your edits are diffed into memory and refine Ami's execution and voice. Iterate — feedback on a finished task resumes the same agent session with full context. Every to-do run and every copilot chat grows the knowledge base. Memory is an Obsidian-style markdown knowledge base at ~/.ami/knowledge/ — dossiers with wiki-links, curated by note agents after each batch of activity, versioned with git so every note has history and restore. It powers: Meeting prep — attendees resolved against the knowledge base; a brief who's coming, what matters, open items lands before each meeting. Meeting recorder — record mic + system audio locally, transcribe on-device with whisper.cpp, feed the transcript into memory. No audio leaves the machine. Style — Ami learns how you write from your real messages and your edits to its drafts; replies come out in your voice. Decision traces — past exceptions, overrides, and feedback are retrieved when similar situations recur, so Ami decides the way you already decided. Ami currently has a limited number of connectors. But it is skilled to build any tool connector for you. - Go to Settings - Click on "Add a connector" at the bottom of the connector list. - Specify the name, homepage url, and your intent on using the connector Ami will build the connector using your claude code and your API key and make it available to task runs and copilot chats. Everything Ami knows lives under ~/.ami/ . ami.db SQLite — signals, todos, runs, settings, tokens knowledge/ the markdown knowledge base, git-versioned worktrees/ isolated coding checkouts , bg-tasks/ and events/ background agent state . Delete the directory and Ami forgets everything. The only outbound calls are to the Anthropic API and to the tools you connected with your tokens. Ami is built as an internal tool. It's still in development stage, and we'll push a stable release soon. Stay tuned. MIT