mirror of
https://github.com/awizemann/scarf.git
synced 2026-05-10 10:36:35 +00:00
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>
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user