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:
Alan Wizemann
2026-03-31 02:30:04 -04:00
commit 18278a3357
67 changed files with 7076 additions and 0 deletions
@@ -0,0 +1,35 @@
import Foundation
enum SidebarSection: String, CaseIterable, Identifiable {
case dashboard = "Dashboard"
case sessions = "Sessions"
case activity = "Activity"
case chat = "Chat"
case memory = "Memory"
case skills = "Skills"
case cron = "Cron"
case logs = "Logs"
case settings = "Settings"
var id: String { rawValue }
var icon: String {
switch self {
case .dashboard: return "gauge.with.dots.needle.33percent"
case .sessions: return "bubble.left.and.bubble.right"
case .activity: return "bolt.horizontal"
case .chat: return "text.bubble"
case .memory: return "brain"
case .skills: return "lightbulb"
case .cron: return "clock.arrow.2.circlepath"
case .logs: return "doc.text"
case .settings: return "gearshape"
}
}
}
@Observable
final class AppCoordinator {
var selectedSection: SidebarSection = .dashboard
var selectedSessionId: String?
}