Skip to main content
← Back to Projects Screenshot of Goose

Goose

A rapidly evolving local-first autonomous agent platform built around Ollama: an AI wingman with approval-gated tools, persistent memory, multiple interfaces, scheduled automation, and a growing plugin ecosystem.

Node.jsOllamaSlack BoltServer-Sent Eventswhisper.cppVitestPlugin Architecture

The Top Gun influence is intentional. Goose is framed as an AI wingman: a local-first autonomous agent platform designed to run on my own hardware, help execute missions, and keep human approval in the loop before it does anything risky.

At the core is a Node.js agent loop built around Ollama function calling. The architecture is deliberately split into clear layers: an interface-agnostic agent core, a shared tool registry, and thin interface adapters that hand tasks into the same runAgent() path.

That separation matters because Goose is not tied to one client surface. The platform currently spans Slack, a local CLI, a browser dashboard, and a voice mode, all sharing the same core reasoning engine, memory model, and tool system.

Current platform capabilities include:

  • Tool-backed task execution across web search, file I/O, shell commands, and system inspection
  • Persistent per-context conversation memory, plus a long-term fact store that survives resets
  • Approval-gated execution for dangerous actions so file writes and shell commands do not happen silently
  • Scheduled missions and proactive monitors, allowing Goose to run on time-based triggers or react to system, file, and URL changes
  • Multi-model routing and sub-agent delegation, so more complex work can be split across focused workers when needed

The thematic layer is part of the product design, not just a naming joke. The language of wingmen, mission control, approvals, and task execution reinforces the core interaction model: the agent can act with initiative, but the human still stays in command.

The extensibility story is just as important as the core product. Goose can load local plugins from a plugins/ directory or discover published npm packages, which means new capabilities can be added without changing the agent core.

That ecosystem is already growing in a separate goose-plugins repository. Existing packages include an architecture memory plugin that stores systems, people, and relationships before generating diagrams in PlantUML, Mermaid, or LikeC4, and a Twitter/X plugin that lets Goose read feeds and act through an assigned account.

The reason this project matters to me is that it has moved beyond being a single assistant script. It is turning into a platform I can keep extending: new tools, new interfaces, new workflows, and a broader plugin ecosystem built around a local, inspectable wingman rather than a black-box cloud product.