Skip to content

scka-de/getCourage

Repository files navigation

getCourage

getCourage is a macOS-native workspace for solo professionals who want a small council of AI advisors instead of a single chat thread.

You create a Cowork Space, hire AI Personas with distinct roles, and bring them into either an always-open Lounge or a structured Meeting Room. In meetings, The Facilitator coordinates who should speak next, keeps the session focused, and tracks cost.

The product is intentionally narrow: macOS first, local-first, BYOK, no cloud account, no engagement mechanics, no social feed, no agent marketplace.

Status

This repository is early alpha software. The app scaffold, onboarding flow, Lounge, Meeting Room UI, local persistence, seed catalogs, provider clients, tool plumbing, memory services, and tests are present, but the product is not yet a polished end-user release.

Use it as a working codebase, not as a stable packaged app.

What It Does

  • Creates persistent Cowork Spaces for different areas of work.
  • Seeds a library of advisor archetypes that can become hired Personas.
  • Supports Meeting Rooms with up to four attendees and a facilitator-controlled turn order.
  • Stores application data locally in SQLite through GRDB.
  • Stores API keys in the macOS Keychain.
  • Supports per-persona provider and model assignment.
  • Includes clients for Anthropic, OpenAI, Ollama, and OpenAI-compatible APIs.
  • Tracks token usage and estimated cost.
  • Includes local Dossier/memory primitives, rolling summaries, and export services.
  • Provides tool plumbing for URL fetch, file read, memory search, and provider-native web search where supported.

What It Is Not

  • Not a ChatGPT clone.
  • Not a cloud collaboration product.
  • Not a cross-platform app.
  • Not an autonomous agent platform.
  • Not a hosted service with synced user data.

Requirements

  • macOS 14.6 or newer for the app target.
  • Xcode 16 or newer recommended.
  • Swift Package Manager access to fetch dependencies.
  • Optional provider credentials for live model calls:
    • Anthropic API key
    • OpenAI API key
    • Ollama running locally at http://localhost:11434

Build

Open the project in Xcode:

open getCourage.xcodeproj

Or build from the command line:

xcodebuild -project getCourage.xcodeproj -scheme getCourage -destination 'platform=macOS' build

Test

Run the test suite from Xcode, or from the command line:

xcodebuild -project getCourage.xcodeproj -scheme getCourage -destination 'platform=macOS' test

The repository includes domain, infrastructure, integration, snapshot, and UI test targets.

Local Data

getCourage stores its local database at:

~/Library/Application Support/getCourage/courage.sqlite

API keys are stored in the macOS Keychain under the service:

dev.getcourage.api-keys

The app seeds model pricing, model context metadata, and archetypes from JSON files bundled in getCourage/Resources/Seeds/.

Architecture

The codebase is split into a few explicit layers:

  • getCourage/Domain contains core models, values, protocols, and errors.
  • getCourage/Infrastructure contains persistence, LLM clients, memory, orchestration, governance, tools, prompts, and keychain access.
  • getCourage/Features contains SwiftUI product surfaces such as onboarding, Lounge, Meeting Room, Dossier, Persona editor, tools, and settings.
  • getCourage/Design contains visual tokens, material components, colors, motion, and glyph mapping.
  • getCourageTests and getCourageUITests contain automated coverage for the app layers.

The main app entry point is getCourage/getCourageApp.swift; app routing and service composition live in getCourage/AppState.swift.

Design Direction

The current UI direction is light macOS Liquid Glass: translucent panels, restrained motion, SF Pro for interface text, Source Serif 4 for ritual surfaces, and abstract geometric glyphs instead of faces or avatars.

Design tokens and component rules live in DESIGN.md.

Dependencies

The Xcode project uses Swift Package Manager dependencies including:

  • GRDB for SQLite persistence.
  • KeychainAccess for secure API key storage.
  • SQLiteVec for vector-search infrastructure.
  • swift-markdown-ui for Markdown rendering.
  • swift-snapshot-testing for snapshot coverage.

Contributing

This project is still moving quickly. Before changing public behavior, keep the following product constraints intact:

  • The product name is always getCourage.
  • User data stays local by default.
  • API keys are user-owned and stored locally.
  • Personas can use different providers and models in the same meeting.
  • Cost visibility is part of the product surface, not an implementation detail.
  • Memory should be explicit, reviewable, and deletable.

License

getCourage is licensed under the GNU Affero General Public License v3.0. See LICENSE.

About

macOS-native multi-persona AI cowork app. BYOK, local-first, AGPL-3.0.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages