Alpha β actively in development. Expect rough edges.
WingmanAI is a macOS ambient AI overlay powered entirely by local inference. Its AI persona β Goose β watches your screen, understands what you are doing in any app, and surfaces proactive advice without you ever having to ask. When Goose wants to act on your behalf, it proposes an action and waits for your approval. You can talk to it by voice or text at any time.
Named after Goose from Top Gun β always watching your back, speaking up when it matters, executing when asked.
Nothing leaves your Mac. Ever.
Every AI assistant tool available today is reactive β you open it, you ask, it answers, you close it. None of them watch your screen. None of them understand what you are doing right now in real time. None of them speak up without being asked.
WingmanAI is ambient. Goose lives in a compact always-on-top overlay in your chosen corner. It watches. It thinks. When it has something useful to say, it says it. When it wants to do something, it asks your permission first.
βββββββββββββββββββββββββββββββββββββββββββ
β πͺΏ WingmanAI βΆ βΈ βΉ ποΈ π βοΈ β
β βββββββββββββββββββββββββββββββββββββββ β
β Looks like you're writing an email. β
β The subject line could be sharper. β
β [βοΈ Fix it] [π‘ Explain] [Dismiss] β
β βββββββββββββββββββββββββββββββββββββββ β
β π§ 14K/128K βββββ RAM 38G CPU 12% β
βββββββββββββββββββββββββββββββββββββββββββ
- Captures your screen every 5 seconds (configurable: 3/5/10/30s)
- Perceptual hash diff β inference only fires when the screen meaningfully changes, keeping your GPU cool
- Watch full screen, active window only, or a user-defined region
- Privacy exclusions β list apps Goose should never watch (1Password, banking apps, etc.)
- Vision transparency log β see exactly what Goose saw and what it concluded
- Mouse tracking β Goose knows where your cursor is and prioritises that area of the screen
- Text selection β highlight any text in any app and Goose immediately reads it, understands it in context, and generates relevant suggestions (not hardcoded buttons β AI-generated based on what you've been doing)
- Approve an action and Goose rewrites the text in-place via AppleScript or keyboard simulation, without you switching apps
- Speak to Goose β
SFSpeechRecognizer, 50+ languages, offline-capable - Goose speaks back β
AVSpeechSynthesizer, macOS neural voices, user picks - Global hotkey (
ββ§Spacedefault) to activate from anywhere - "Hey Goose" wake word β optional, toggleable
- Play β Goose is active, watching, models loaded in GPU RAM
- Pause β capture stops, inference freezes, models stay warm β instant resume
- Stop β full resource release, models evicted from VRAM β use when you need GPU for something else
- Reasoning: IBM
granite3.1-dense:8bβ 128K context, same model Bob uses - Vision:
llava:7bβ reads your screen - Both bundled via Ollama β zero external installation required
- Both configurable β swap for any Ollama-compatible model
VisionProviderabstract interface β swap LLaVA for moondream2 or better with one class change
- When local Granite isn't enough, optionally escalate to GPT-4o, Claude, or Grok
- Priority order, per-minute throttle, and full failback chain β all user-configured
- Attribution always visible: "π©οΈ Claude says:" vs "πͺΏ Goose says:"
- API keys stored locally, never transmitted except to the configured provider
[SEARCH: query]β DuckDuckGo, no API key needed[FETCH: url]β direct URL fetch- Rate limited (default 10/min, configurable)
- Proactive research mode β tell Goose to research something while you keep working; it surfaces a summary card when done
- Shell commands β Goose proposes, you approve, it executes
- AppleScript β Goose controls any app with your approval
- Every action requires explicit approval and is logged to the audit log
- Timed tasks β "work on this for 5 minutes then stop"
- Persistent memory across sessions β Goose remembers your preferences and projects
- Project profiles β named context bundles (folder + pinned files + persona)
- One-tap profile switch from the overlay
- Snippet library β save great outputs, searchable
- Token counter always visible:
π§ 14K/128K βββββ 11%β green β amber β red - When context fills (90%), Goose writes a concise summary ("state of the world") and starts fresh
- Loads previous session summaries intelligently β more recent sessions loaded first within token budget
- Session files:
gooseSession1-2025-07-14.mdβ readable and editable by you
- Always visible:
RAM 38G CPU 12% GPU 48% - Auto-throttle: when thermals hit red, Goose slows capture interval automatically
- Full progress bars in expanded view
- Git awareness β
git status,git diff, auto commit message generation - Error message explainer β stack traces and compiler errors detected on screen
- Terminal command suggester β failed commands β fix suggestions
- Code review on demand, draft improver, translation, tone analyzer
- Drag files onto the overlay β Goose reads and comments
- macOS Services "Ask Goose" β right-click selected text in any app
- URL scheme
wingmanai://ask?q=...β trigger from Keyboard Maestro, Alfred, Shortcuts
- LaunchAgent β auto-restarts on crash
- Crash recovery β state snapshot before each inference
- Audit log β every action logged with timestamp, tool, argument, approval status
- Local-only badge β visible confirmation nothing has left your Mac
- Update check on launch
WingmanAI occupies a position no other tool currently holds.
| Capability | Ollama | Jan.ai | LM Studio | Unsloth | OpenClaw | WingmanAI |
|---|---|---|---|---|---|---|
| Core purpose | Inference runtime | Local chat UI | Local chat + dev API | Model training | Messaging gateway | Ambient desktop AI |
| Screen watching | β | β | β | β | β | β |
| Proactive advice | β | β | β | β | β | β |
| Always-on overlay | β | β | β | β | Menu bar only | β |
| App control / keyboard injection | β | β | β | β | β | β |
| Works in any app | β | β | β | β | β | β |
| Voice two-way | β | β | β | β | TTS only | β |
| Live screen vision | β | β | β | β | β | β |
| Shell execution | β | β | β | β | β | β + approval gate |
| Web search | β | β | β | β | β | β |
| Persistent memory | β | β | β | β | MEMORY.md | β |
| Git awareness | β | β | β | β | β | β |
| Session continuity files | β | β | β | β | β | β |
| 100% local / offline | β | β | β | β | β requires API keys | β |
| Zero API cost | β | β | β | β | β | β (frontier optional) |
| Bundled β no setup | β | β | β | β | β npm + Node.js | β |
| IBM Granite first-class | Runs it | Runs it | Runs it | Runs it | β | β Default |
| Thermal management | β | β | β | β | N/A | β diff-gated inference |
- Ollama β the engine WingmanAI runs on top of. Infrastructure, not competition.
- Jan.ai β beautiful local ChatGPT. You go to it. It doesn't watch you.
- LM Studio β great local model runner and developer API. You go to it.
- Unsloth β the best tool for training models. Different job entirely.
- OpenClaw β your AI in your messaging apps, from anywhere. Needs cloud API keys. No screen awareness.
- WingmanAI β the only tool that watches what you're doing right now and helps without being asked, entirely on your machine.
- macOS β Apple Silicon recommended (M1/M2/M3/M4)
- RAM β 16GB minimum, 32GB+ recommended (models need ~10GB total)
- Storage β ~8GB for default models
- macOS permissions β Screen Recording + Accessibility (guided at first launch)
- No Ollama installation needed β bundled inside the app
This is early alpha software. Here's what that means honestly:
Working:
- Core overlay UI with Play/Pause/Stop transport controls
- Screen capture and perceptual hash diffing
- LLaVA vision inference on screen changes
- Granite reasoning engine with tool call loop
- ApprovalGate for shell and AppleScript actions
- Full two-way voice (STT + TTS)
- Web search via DuckDuckGo
- Memory persistence across sessions
- Session summary files
- Performance monitor strip
In progress / rough:
- First-launch flow (model downloads, permission setup)
- Text selection action card (Focus Awareness)
- Frontier model escalation
- Git awareness and commit message generation
- Some intelligence features (meeting mode, stuck detection) need real-world tuning
Known issues:
- Occasional crash on startup if Ollama port conflict exists
- Vision transparency log UI needs polish
- Settings screen not fully wired to all runtime settings yet
# Clone the repo
git clone https://github.com/YOUR_USERNAME/WingmanAI.git
cd WingmanAI
# Install Flutter dependencies
flutter pub get
# Build debug
flutter build macos --debug
# Run
flutter run -d macosThe bundled Ollama runtime is included in macos/Runner/ollama/. The Xcode build phase copy_ollama.sh copies it into the .app bundle automatically.
WingmanAI.app
βββ Swift (~200 lines) β Window control, STT, TTS, mouse/selection tracking
βββ Dart / Flutter β All business logic
βββ core/ β Pure Dart, zero Flutter imports
β βββ ollama/ β Bundled Ollama lifecycle + streaming inference
β βββ vision/ β VisionProvider abstraction (LLaVA default)
β βββ screen/ β ScreenWatcher + perceptual hash diff
β βββ reasoning/ β ReasoningEngine (Granite + tool calls)
β βββ frontier/ β Optional cloud escalation (GPT-4o, Claude, Grok)
β βββ tasks/ β Serial task queue (parallel hook for future)
β βββ memory/ β MemoryStore + ProjectProfiles
β βββ session/ β Session summary writer + loader
β βββ intelligence/ β StuckDetector, MeetingMode, ErrorDetector, etc.
β βββ ... β 90+ additional pure Dart modules
βββ ui/ β Flutter widgets
βββ overlay/ β CompactCard, ExpandedChat, all cards
βββ firstlaunch/ β Startup flow screens
βββ settings/ β Full settings screen
State management: pure Dart streams + setState(). No Riverpod, no GetX, no Redux.
See DESIGN.md for the full design document and PLAN.md for the implementation plan with competitive analysis.
Alpha stage β the codebase is moving fast. If you want to contribute:
- Read
DESIGN.mdandPLAN.mdfirst β they document the full intended design - All
lib/core/files must have zero Flutter imports (pure Dart) - All
lib/ui/files use Flutter normally - Follow the existing
AppColors/AppThemethroughout - Every destructive action (shell, AppleScript, file write) must go through
ApprovalGate
MIT
WingmanAI β named after Goose, Maverick's wingman who always had his back.