Skip to content

Latest commit

Β 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸͺΏ WingmanAI

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.


What Makes This Different

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%    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Features

πŸ‘οΈ Screen Watching

  • 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

🎯 Focus Awareness

  • 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

πŸŽ™οΈ Full Two-Way Voice

  • Speak to Goose β€” SFSpeechRecognizer, 50+ languages, offline-capable
  • Goose speaks back β€” AVSpeechSynthesizer, macOS neural voices, user picks
  • Global hotkey (βŒ˜β‡§Space default) to activate from anywhere
  • "Hey Goose" wake word β€” optional, toggleable

πŸ–₯️ Transport Controls β€” β–Ά ⏸ ⏹

  • 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

πŸ€– AI Models

  • 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
  • VisionProvider abstract interface β€” swap LLaVA for moondream2 or better with one class change

🌩️ Frontier Model Escalation (Off by Default)

  • 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

🌐 Web Search

  • [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

πŸ–₯️ Action Execution

  • 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"

🧠 Memory & Profiles

  • 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

πŸ“ Session Continuity

  • 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

πŸ“Š Performance Monitor

  • 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

πŸ”§ Developer Features

  • 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

πŸ›‘οΈ Reliability

  • 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

Competitive Landscape

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

The one-liner on each competitor

  • 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.

Requirements

  • 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

Alpha Status

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

Building from Source

# 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 macos

The bundled Ollama runtime is included in macos/Runner/ollama/. The Xcode build phase copy_ollama.sh copies it into the .app bundle automatically.


Architecture

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.


Contributing

Alpha stage β€” the codebase is moving fast. If you want to contribute:

  1. Read DESIGN.md and PLAN.md first β€” they document the full intended design
  2. All lib/core/ files must have zero Flutter imports (pure Dart)
  3. All lib/ui/ files use Flutter normally
  4. Follow the existing AppColors / AppTheme throughout
  5. Every destructive action (shell, AppleScript, file write) must go through ApprovalGate

License

MIT


WingmanAI β€” named after Goose, Maverick's wingman who always had his back.

About

πŸͺΏ Goose β€” ambient macOS AI wingman. Watches your screen, understands what you're doing, helps without being asked. 100% local, powered by IBM Granite + LLaVA via bundled Ollama.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages