Skip to main content
Glama
README.md
<p align="center">
  <img src="docs/assets/sesame-icon.png" width="112" height="112" alt="Sesame icon">
</p>

<h1 align="center">Sesame</h1>

<p align="center"><b>Stop digging through chats.</b><br>Your library of AI creations: say a sentence and get back anything Claude Code or Codex delivered.</p>

<div align="center">

<sub>Install in two lines (macOS 13+):</sub>

```bash
brew install qiwei66/tap/sesame
sesame
```

</div>

<p align="center">
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT license"></a>
  <img src="https://img.shields.io/badge/macOS-13%2B-black.svg" alt="macOS 13+">
  <a href="https://github.com/qiwei66/sesame/releases/latest"><img src="https://img.shields.io/github/v/release/qiwei66/sesame" alt="Release"></a>
  <img src="https://img.shields.io/badge/index-local%20only-2ea44f.svg" alt="Index stays on your Mac">
</p>

<p align="center"><a href="https://qiwei66.github.io/sesame/"><b>Website</b></a> · <a href="README_zh.md">中文</a></p>

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="docs/assets/hero-firstrun-en-dark.gif">
    <img src="docs/assets/hero-firstrun-en-light.gif" width="960" alt="Sesame's first run: 'Just say it. It's there.' with a count of 313 AI creations rolling up from zero, split into dashboards, reports, sites, PRs and files">
  </picture>
</p>

<p align="center"><a href="https://github.com/qiwei66/sesame/releases/latest/download/sesame-promo-en.mp4">▶ Watch the full promo (45 s)</a></p>

<p align="center">Before: scroll through 20 chats to find yesterday's dashboard. Now: say "yesterday's dashboard".</p>

Your AI builds dashboards, reports, decks, sites and pull requests. A week later they are buried in long chats.
Sesame keeps a local library of every artifact your AI delivered, so a few words bring it back: the artifact itself, not the chat it came from.

Session viewers show you the conversation. Sesame opens what the conversation produced.

## What it does

<table>
  <tr>
    <td width="36%">
      <h3>Type, and it's already there</h3>
      Results show up with the first letters. ↑ ↓ to pick, ↵ to open. If nothing local fits, ↵ lets Sesame search everything.
    </td>
    <td width="64%">
      <picture>
        <source media="(prefers-color-scheme: dark)" srcset="docs/assets/typing-en-dark.gif">
        <img src="docs/assets/typing-en-light.gif" width="560" alt="Typing 'tra' lists the Trading Dashboard first; 'trading da' narrows to it; 'trading dashboard v2' offers a full search">
      </picture>
    </td>
  </tr>
</table>

<table>
  <tr>
    <td width="64%">
      <picture>
        <source media="(prefers-color-scheme: dark)" srcset="docs/assets/voice-en-dark.gif">
        <img src="docs/assets/voice-en-light.gif" width="560" alt="Holding the hot key: a waveform and a live transcript, then on release the Trading Dashboard opens">
      </picture>
    </td>
    <td width="36%">
      <h3>Hold the hot key and say it</h3>
      Hot key: ⌥⇧Space (switch to ⌘Space in Settings). Tap it to type; hold it to talk, let go to send. "Open last week's trading dashboard" opens the dashboard itself.
    </td>
  </tr>
</table>

<table>
  <tr>
    <td width="36%">
      <h3>Useful the moment you install it</h3>
      On first launch it reads your existing Claude Code and Codex history and counts every artifact your AI delivered.
    </td>
    <td width="64%">
      <picture>
        <source media="(prefers-color-scheme: dark)" srcset="docs/assets/firstrun-en-dark.gif">
        <img src="docs/assets/firstrun-en-light.gif" width="560" alt="First run: 'Just say it. It's there.' and 313 AI creations counted up, split into dashboards, reports, sites, PRs and files">
      </picture>
    </td>
  </tr>
</table>

<table>
  <tr>
    <td width="64%">
      <picture>
        <source media="(prefers-color-scheme: dark)" srcset="docs/assets/pick-en-dark.gif">
        <img src="docs/assets/pick-en-light.gif" width="560" alt="Three candidates for the trading dashboard; arrow keys move the selection and Return opens it">
      </picture>
    </td>
    <td width="36%">
      <h3>More than one match? Pick one</h3>
      When several names fit, you get a short list instead of a guess; when none fits, it says so instead of offering filler. Local services, Claude pages, files, PRs, sites and online docs all count.
    </td>
  </tr>
</table>

<table>
  <tr>
    <td width="36%">
      <h3>Share your number</h3>
      Share on the first-run panel turns your number into a 1200×675 image, saves it to Downloads and copies it, ready to paste into a post. Only counts are on it: no titles, paths or names.
    </td>
    <td width="64%">
      <picture>
        <source media="(prefers-color-scheme: dark)" srcset="docs/assets/share-en-dark.png">
        <img src="docs/assets/share-en-light.png" width="560" alt="Share card: 'My 313 AI creations, one sentence away.' with counts by type">
      </picture>
    </td>
  </tr>
</table>

## Install

```bash
brew install qiwei66/tap/sesame
sesame
```
<!-- the tap is github.com/qiwei66/homebrew-tap (formula source: packaging/homebrew/) -->

`sesame` puts Sesame.app in `~/Applications` and starts it; run it again any time (an older copy from `make install` is kept as
`Sesame.app.bak-<time>`). Homebrew brings Node.js, builds the app from source on your Mac and ad-hoc signs it: no Gatekeeper warning, no Apple
Developer account needed. The first install compiles the app and takes a few minutes; it needs the Xcode Command Line Tools
(`xcode-select --install`), which Homebrew itself already requires.

Or install from source (Node.js 22.18+ and the Xcode Command Line Tools, `xcode-select --install`):

```bash
git clone https://github.com/qiwei66/sesame.git
cd sesame
make install
open ~/Applications/Sesame.app
```

`make uninstall` removes it and keeps your settings. The hot key is ⌥⇧Space; switch to ⌘Space in Settings › Hot key.

## Use it in Claude Code

Sesame also runs inside Claude Code as a plugin. Ask in plain words in any session and Claude looks it up in your
library, then opens it on your Mac. The app is optional: without it, the plugin builds the same local index from
your Claude Code and Codex history; with it, both share one index.

```bash
claude plugin marketplace add qiwei66/sesame && claude plugin install sesame@sesame
```

Inside a session, `/plugin marketplace add qiwei66/sesame` and then `/plugin install sesame@sesame` do the same.
It needs Node.js 22.18+ with npm, which Claude Code uses to install the plugin's packages.

> **You:** Where is the trading dashboard from last week?
>
> **Claude:** *(search_artifacts → open_artifact)* Found it: your **Trading Dashboard** is a local web service at
> http://127.0.0.1:8787, last seen on September 27. It's opening in your browser now.

> **You:** Open the report I made yesterday
>
> **Claude:** *(search_artifacts → open_artifact)* Found yesterday's report, **Q3 sales report** (a Markdown file),
> and opened it.

Already installed the app with Homebrew or `make install`? Its `va` works as an MCP server too:
`claude mcp add sesame -- va mcp`.

Three tools: `search_artifacts` (title, type, link, time and source session of each match), `open_artifact` and
`artifact_stats`. Any other MCP client can run the same server with `va mcp`; see [docs/mcp.md](docs/mcp.md).

## Privacy

- The index stays on your Mac (`~/Library/Application Support/Sesame`) and is never uploaded.
- Sesame only reads `~/.claude/projects` and `~/.codex/sessions`, and never writes to them.
- A model is optional. If you set one up, it gets your sentence, your app names and, when local search can't
  decide, each candidate's type, title and a few keywords. Never full links, file paths or your clipboard.
- In Claude Code, the matches you ask about (title, type, link, time) go to the model of that conversation, the same
  one you are already talking to. Nothing goes anywhere else.

## More

System actions (disk space, moving files to the Trash), custom commands, skills and model setup: [docs/advanced.md](docs/advanced.md).

If Sesame saved you one search through old chats, a star helps other people find it.

## License

MIT, see [LICENSE](LICENSE).

Maintenance

ActivityMaintained
ResponsivenessUnresponsive