An ambient AI companion that lives on your desktop.
It sees your screen, understands your context, and stays out of the way until you need it.
Web App | Download | Shortcuts | Development
Aura is not an app you open. It floats above your desktop, always one shortcut away. It sees your screen, responds to your questions in plain language, and disappears when you're done.
Two surfaces:
- Desktop overlay — a transparent, always-on-top Electron window. Summon it with
Alt+Space, ask anything, dismiss it. Screen context is captured automatically on every message. - Web app — full conversational interface with history and multi-model access at aura.aura-companion.workers.dev
Both share the same Supabase backend, so your conversation history is always in sync.
| Platform | Installer |
|---|---|
| macOS Apple Silicon | Aura-arm64.dmg |
| macOS Intel | Aura-x64.dmg |
| Windows x64 | Aura-x64.exe |
Free during early access.
macOS note: The app is unsigned. On first launch, right-click and choose Open, or run
xattr -cr /Applications/Aura.appin Terminal.
| Shortcut | Action |
|---|---|
Alt+Space |
Summon / dismiss overlay |
Alt+Shift+S |
Capture screenshot manually |
Alt+Shift+H |
Toggle invisible mode (hidden from screen recording) |
Shift+Enter |
Trigger voice input |
Alt+Arrow |
Nudge overlay position |
| Layer | Tech |
|---|---|
| Desktop | Electron 39, transparent overlay, always-on-top |
| Framework | TanStack Start (React 19 + TanStack Router) |
| Styling | Tailwind CSS v4, custom design tokens |
| AI | Kimi K2.6 (Moonshot AI), with vision support |
| AI extras | GPT-4o, Claude Sonnet, Gemini Flash, Llama 3.3 via OpenRouter |
| Backend | Supabase (auth, database, edge functions) |
| Hosting | Cloudflare Workers |
| Build | Vite 7, esbuild, electron-builder, Bun |
Aura builds a living model of who you are — silently, in the background, without ever asking.
Every conversation you have is analysed after 30 minutes of inactivity. A secondary AI pass reads the full transcript and extracts structured facts: what you're building, what stack you're using, how you communicate, what keeps coming up. These facts are merged into a persistent user_profile stored in Supabase, and injected quietly into Aura's system prompt on every future request.
The result: Aura gets sharper over time. It stops asking you to explain your stack. It knows you prefer concise answers. It remembers that you're shipping on Cloudflare and that your overlay is Electron-based. It references your actual projects by name.
How it works:
Every message you send
└── stored in Supabase (conversations + messages)
Every 30 minutes — pg_cron fires
└── finds conversations inactive since 30min, not yet processed
└── sends full transcript to Kimi for structured extraction
└── identity { name, job, timezone, languages, style }
└── projects [{ name, stack[], description, status }]
└── topics [{ label, count }] — ranked by frequency
└── notes [{ fact }] — free-form observations
└── merges extracted data into user_profile (upsert, no overwrites)
Next time you open Aura
└── profile is loaded and injected into system prompt
└── Aura already knows who you are
Profile schema (user_profile table):
| Field | Type | Description |
|---|---|---|
identity |
jsonb |
Name, job, timezone, languages, communication style |
projects |
jsonb[] |
Active projects with stack, description, status |
topics |
jsonb[] |
Recurring themes ranked by frequency across sessions |
memory_notes |
jsonb[] |
Free-form facts (max 50, deduplicated) |
profile_updated_at |
timestamptz |
Last extraction timestamp |
The profile is never shown to you directly — it lives entirely in the model's context. No memory UI, no review screen. It just makes Aura feel like it knows you.
Privacy note: all profile data is stored in your own Supabase project, isolated by RLS. Nothing leaves your instance.
The overlay has no login form. When signed out, clicking the orb opens the web app at ?overlay=true. After sign-in, the web app redirects to aura://auth?access_token=.... Electron intercepts the deep link and stores the session via electron-store.
Add this URL in Supabase > Authentication > URL Configuration > Redirect URLs:
aura://auth
bun install
cp .env.example .env
# Fill in your keys
# Web app
bun dev
# Electron overlay
bun run electron:dev| Variable | Description |
|---|---|
VITE_SUPABASE_URL |
Supabase project URL |
VITE_SUPABASE_PUBLISHABLE_KEY |
Supabase anon key |
VITE_WEB_URL |
Public URL of the web app |
KIMI_API_KEY |
Moonshot AI key (set as Supabase secret) |
OPENROUTER_API_KEY |
OpenRouter key (set as Supabase secret) |
# macOS
bunx electron-builder --mac dmg --arm64 --publish never
bunx electron-builder --mac dmg --x64 --publish never
# Windows
bunx electron-builder --win nsis --x64 --publish neverReleases are built automatically via GitHub Actions on every v* tag:
git tag v0.4.0
git push origin v0.4.0supabase secrets set KIMI_API_KEY=sk-...
supabase secrets set OPENROUTER_API_KEY=sk-or-...
supabase functions deploy chat --project-ref <your-project-ref>The workflow in .github/workflows/deploy-functions.yml deploys automatically on push to main when files in supabase/functions/ change.
| Secret | Description |
|---|---|
VITE_SUPABASE_URL |
Supabase project URL |
VITE_SUPABASE_PUBLISHABLE_KEY |
Supabase anon key |
VITE_WEB_URL |
Public URL of the web app |
SUPABASE_PROJECT_REF |
Supabase project ref |
SUPABASE_ACCESS_TOKEN |
Supabase CLI access token |
- Fork the repo
- Create a branch:
git checkout -b feat/your-feature - Commit your changes:
git commit -m 'feat: your feature' - Push and open a pull request
MIT. See LICENSE.

