Native macOS client for Fountain — manage agents, environments, vaults, runners, conversations and your team
  • Swift 99.6%
  • Shell 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jake Gaylor f7f227c9d6
docs: re-vendor the OpenAPI snapshot (managoat/fountain#1810) (#2)
The vendored copy was generated at server 0.14.0 and still carried
`brew install BinaryBourbon/tap/fountain` in `info.description`. That is
staleness in an artifact rather than a source edit, so the fix is to take
the spec again rather than to hand-edit it: the live document at
managoat.com/api/openapi.json already says `managoat/tap` and contains no
`BinaryBourbon` at all.

0.14.0 -> 0.16.0, 147 -> 163 operations, 105 -> 116 paths. Eleven paths
added, none removed, which is what "the API is additive" is supposed to
look like:

  /api/auth/device, /api/auth/device/token
  /api/claimable-users{,/{id},/{id}/claim}
  /api/connection-providers{,/{id},/{id}/discover}
  /api/sandboxes/{sandbox_id}/{diff,file,files}

`docs/api-surface.md` said "~147 operations" and now says 163. Which of
the eleven FountainKit should wrap is a separate question; this only
updates the contract they are measured against.

`swift build` and `swift test` (66 tests) pass. Nothing compiles the
snapshot; it is the map the hand-written Codable models are checked
against.


Claude-Session: https://claude.ai/code/session_01RJBSE57BbSEDF5s5fvWEga

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 08:51:01 -04:00
.github/workflows feat: FountainKit + app shell foundation 2026-08-31 13:37:25 -04:00
docs docs: re-vendor the OpenAPI snapshot (managoat/fountain#1810) (#2) 2026-09-10 08:51:01 -04:00
Scripts refactor: depend on FountainKit from the Fountain SDK 2026-09-03 00:41:08 -04:00
Sources refactor: depend on FountainKit from the Fountain SDK 2026-09-03 00:41:08 -04:00
Tests/GoatCoreTests refactor: depend on FountainKit from the Fountain SDK 2026-09-03 00:41:08 -04:00
.gitignore feat: Discover agents — scan this Mac for agents to import and services to plug in 2026-09-01 19:28:59 -04:00
LICENSE chore: relicense from MIT to Apache-2.0 2026-09-03 00:33:50 -04:00
NOTICE chore: point the Fountain dependency at managoat/fountain 2026-09-10 07:18:36 -04:00
Package.resolved chore: point the Fountain dependency at managoat/fountain 2026-09-10 07:18:36 -04:00
Package.swift chore: point the Fountain dependency at managoat/fountain 2026-09-10 07:18:36 -04:00
README.md chore: point the Fountain dependency at managoat/fountain 2026-09-10 07:18:36 -04:00

swift-goat

A native macOS client for Fountain, the open-source control plane for coding agents.

Manage agents, environments, vaults, runners, conversations and your team from a desktop app instead of a browser tab.

Status

Usable. On top of the FountainKit foundation the app now covers the core loop — spawn a conversation (agent + environment + vault + first prompt), watch it stream, answer permission requests inline, queue prompts mid-turn, interrupt, terminate, delete — plus create/edit/delete for agents, environments and vaults (secrets included), full-text search, and the audit trail. The Runners section can also run this Mac as a runner: it finds the fountain CLI, starts/stops the daemon with the app's own session, and tails its log.

Being native earns its keep: Touch ID (password fallback) gates the Admin console and secret changes, a menu bar extra badges working conversations and jumps back into live ones while the window is closed, Finder files drop straight onto a transcript — images attach to the prompt, text files inline into it — and permission requests arrive as actionable notifications you can Allow/Deny without focusing the app (run the bundled build for those: Scripts/package-app.sh, then open dist/SwiftGoat.app).

Agents get an MCP chooser: search the official MCP registry and add a server with its auth prefilled as ${SECRET} references, mount one of your OAuth connections (Gmail, Microsoft, …), or type a custom remote or command. "Discover" scans this Mac — the Claude Code / Codex / Gemini / OpenCode / Cursor configs you already have, the projects you work in, the apps you've installed and the sites you visit — and turns that into ready-to-create agent drafts (your local setups imported with secrets redacted, a "TypeScript engineer" for the languages you actually use) and integration suggestions you can add to any agent. It runs locally and sends nothing until you confirm. Team schedules, webhooks and billing are next; see docs/api-surface.md for the wrapping backlog.

Layout

Target What
GoatCore App domain: session (Touch ID-gated key store), settings, observable stores.
SwiftGoat The SwiftUI macOS app.

FountainKit, the typed Fountain API client this app is built on, used to live here and now ships from the Fountain repo itself (sdk/swift, Apache-2.0), where it runs Fountain's cross-language conformance suite. This app is its first consumer and its worked example.

See docs/architecture.md for the design and the rules that keep it extensible.

Build

Requires Swift 6.1+ (Command Line Tools are enough; Xcode not required).

swift build
swift test
swift run SwiftGoat

Connect

Settings take a base URL and an API key. Get a key from your Fountain's console under API keys, or use an existing ~/.fountain/credentials.

License

Apache-2.0. See LICENSE and NOTICE — the project was MIT through 2026-09-03 and was relicensed by its sole copyright holder to match the license Fountain's clients carry.