Files
scarf/CONTRIBUTING.md
T
Alan Wizemann 18278a3357 Initial release: Scarf — macOS GUI for the Hermes AI agent
Native SwiftUI app providing full visibility into the Hermes AI agent:
- Dashboard with system health, token usage, and cost tracking
- Sessions browser with conversation detail and FTS5 search
- Activity feed with tool call inspector (read/edit/execute/fetch/browser)
- Embedded terminal chat via SwiftTerm with full ANSI/Rich rendering
- Memory viewer/editor with live file-watching refresh
- Skills browser by category with file content viewer
- Cron job viewer with output display
- Real-time log tailing with level filtering
- Settings display with raw config and Finder path links
- Menu bar status icon with quick actions

Architecture: MVVM-Feature, zero dependencies beyond SwiftTerm,
read-only SQLite access, Swift 6 strict concurrency.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 02:30:04 -04:00

1.5 KiB

Contributing to Scarf

Thanks for your interest in contributing to Scarf.

Getting Started

  1. Fork and clone the repo
  2. Open scarf/scarf.xcodeproj in Xcode 26.3+
  3. Build and run (requires macOS 26.2+ and Hermes installed at ~/.hermes/)

Architecture

Scarf uses the MVVM-Feature pattern. Each feature is a self-contained module under Features/:

Features/FeatureName/
  Views/          SwiftUI views
  ViewModels/     @Observable view models

Rules:

  • Features never import sibling features directly
  • Cross-feature navigation goes through AppCoordinator
  • Services in Core/Services/ are shared across features
  • Models in Core/Models/ are plain structs

Guidelines

  • Keep it simple. Minimal dependencies, no over-engineering.
  • No commented-out code, TODOs, or deferred functionality in PRs.
  • All code must build with zero warnings.
  • Follow existing patterns — look at how similar features are built before adding new ones.
  • The app only reads from ~/.hermes/state.db (never writes). Memory files are the exception.
  • Swift 6 strict concurrency: @MainActor default isolation, nonisolated for service methods.

Reporting Issues

Open an issue with:

  • What you expected to happen
  • What actually happened
  • macOS version and Hermes version
  • Steps to reproduce

Pull Requests

  • Open an issue first to discuss the change
  • One feature or fix per PR
  • Include a clear description of what changed and why
  • Ensure the project builds with xcodebuild -project scarf/scarf.xcodeproj -scheme scarf build