{"id":50475703,"url":"https://github.com/koftwentytwo/jarvis","last_synced_at":"2026-06-01T13:01:27.144Z","repository":{"id":357591868,"uuid":"1213572359","full_name":"KofTwentyTwo/Jarvis","owner":"KofTwentyTwo","description":"Personal always-on macOS AI assistant in the shape of the Iron Man HUD — native Swift brain, R3F particle-ring face, voice-first, locally-grounded.","archived":false,"fork":false,"pushed_at":"2026-05-13T13:14:20.000Z","size":5897,"stargazers_count":0,"open_issues_count":117,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-05-13T13:31:56.968Z","etag":null,"topics":["agent","ai-assistant","anthropic","llm","macos","mcp","ollama","react-three-fiber","swift","swiftui","voice-assistant","wkwebview"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KofTwentyTwo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-17T14:21:58.000Z","updated_at":"2026-05-13T12:38:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/KofTwentyTwo/Jarvis","commit_stats":null,"previous_names":["koftwentytwo/jarvis"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/KofTwentyTwo/Jarvis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KofTwentyTwo%2FJarvis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KofTwentyTwo%2FJarvis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KofTwentyTwo%2FJarvis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KofTwentyTwo%2FJarvis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KofTwentyTwo","download_url":"https://codeload.github.com/KofTwentyTwo/Jarvis/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KofTwentyTwo%2FJarvis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33775864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai-assistant","anthropic","llm","macos","mcp","ollama","react-three-fiber","swift","swiftui","voice-assistant","wkwebview"],"created_at":"2026-06-01T13:01:26.035Z","updated_at":"2026-06-01T13:01:27.136Z","avatar_url":"https://github.com/KofTwentyTwo.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jarvis\n\n\u003e A personal, always-on macOS AI assistant in the shape of the Iron Man HUD —\n\u003e native Swift brain, R3F particle-ring face, voice-first, locally-grounded.\n\n[![License: MIT](https://img.shields.io/github/license/KofTwentyTwo/Jarvis)](LICENSE)\n[![Last commit](https://img.shields.io/github/last-commit/KofTwentyTwo/Jarvis/develop)](https://github.com/KofTwentyTwo/Jarvis/commits/develop)\n[![Issues](https://img.shields.io/github/issues/KofTwentyTwo/Jarvis)](https://github.com/KofTwentyTwo/Jarvis/issues)\n[![Platform: macOS 26](https://img.shields.io/badge/platform-macOS%2026%20Tahoe-blue)](https://www.apple.com/macos/)\n[![Swift 6](https://img.shields.io/badge/swift-6.0-orange)](https://swift.org)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/KofTwentyTwo/Jarvis/badge)](https://scorecard.dev/viewer/?uri=github.com/KofTwentyTwo/Jarvis)\n\nJarvis is a hybrid native + embedded-web macOS app that runs as an ambient\nmenu-bar presence. A Swift host owns the operating system (mic, camera,\nclipboard, AppleScript, hotkeys, persistent storage) and an agent loop that\nstreams **Claude Opus 4.7** with **Ollama** as a first-class local fallback.\nA `WKWebView` mounts a React + **React Three Fiber** HUD — a single pulsing\nparticle ring plus a chat panel — purely as the rendering surface. Tools\nride on **MCP** (Model Context Protocol). Voice (wake-word, STT, TTS) and\nmemory (SQLite + FTS5 + `sqlite-vec`, mem0-style extraction) are **fully\nlocal**: no cloud TTS/STT, no remote embeddings.\n\n**Scope:** built for one user on one machine — the author. There is no\nmulti-tenancy, no auth, and no commercial framing. The repo is public so\nthe code is portable across the author's machines and legible to AI\ncoding agents; outside readers are welcome to lift the agent loop, typed\nJSON Bus, MCP runtime, voice pipeline, R3F HUD scaffold, or the eighteen\nboundary-gate linters if useful — but the product is not pitched at a\ngeneral audience.\n\n\u003e **Status:** alpha / under active development. `develop` is `0.1.0`. The\n\u003e nine GSD phases shipped; the project is now in an audit-and-stabilize\n\u003e window plus a v1.0 typed-API migration. See [Roadmap](#roadmap) and\n\u003e [GitHub Issues](https://github.com/KofTwentyTwo/Jarvis/issues) for what\n\u003e is done versus in flight.\n\n## Screenshots\n\n\u003c!-- TODO: ![HUD demo](docs/media/hud-demo.gif) — record and add separately. --\u003e\n\nScreenshots are TBD — when there is something worth showing, it lands in\n[`assets/screenshots/`](assets/screenshots/) per the shot list in that\ndirectory's `README.md`.\n\n- HUD particle ring across the four agent states (idle / listening / thinking / speaking)\n- Status panel (menu-bar → *Status…*) with the live boot-health probe set\n- Dev Overlay tabs (Turns / Tools / Bus / Logs)\n- Non-dismissible degradation banner (critical-severity probe failure)\n\n## Architecture at a glance\n\nA two-process, one-bridge shape: Swift owns truth, the webview is a pure\nview, the Bus is the only legal way they talk. Subsystems live in\nsingle-purpose SPM packages; **18 boundary-gate scripts** keep the\nisolation honest.\n\n```mermaid\nflowchart TB\n    User[User\u003cbr/\u003evoice / text / hotkey]\n\n    subgraph Swift[\"Swift host (AppKit + SwiftUI)\"]\n        AppDel[AppDelegate\u003cbr/\u003einstall DAG + lifecycle]\n        Orch[AgentOrchestrator\u003cbr/\u003etool-loop + streaming]\n        Bridge[WebviewBridge\u003cbr/\u003etyped JSON Bus]\n        Voice[Voice\u003cbr/\u003ewake / STT / TTS]\n        Vision[Vision\u003cbr/\u003ecamera + frame-attach]\n        Memory[Memory\u003cbr/\u003eSQLite + vec + mem0]\n        MCP[MCPRuntime\u003cbr/\u003ehelpers + in-proc tools]\n        Replay[Replay\u003cbr/\u003eturn-by-turn audit log]\n        Boot[BootHealth\u003cbr/\u003eNOT FAKED probes]\n    end\n\n    LLM[\"LLMProvider\u003cbr/\u003eAnthropic Opus 4.7 / Ollama\"]\n\n    subgraph Web[\"WKWebView (React + R3F)\"]\n        Ring[Particle ring]\n        Chat[Chat panel]\n        DevOv[Dev Overlay]\n    end\n\n    User --\u003e Voice\n    User --\u003e Bridge\n    AppDel --\u003e Vision\n    AppDel --\u003e Orch\n    AppDel --\u003e Voice\n    AppDel --\u003e Boot\n    Voice --\u003e Orch\n    Orch \u003c--\u003e LLM\n    Orch --\u003e MCP\n    Orch --\u003e Memory\n    Orch --\u003e Vision\n    Orch --\u003e Replay\n    Orch --\u003e Bridge\n    Boot --\u003e Bridge\n    Bridge \u003c--\u003e|Bus protocol| Web\n```\n\nThe deep architecture doc is [`ARCHITECTURE.md`](ARCHITECTURE.md) (subsystem\ndeep-dives, anti-patterns, navigation cheat sheet). The v1.0 typed-API\ncontract that is currently being migrated to lives at\n[`.planning/architecture/JARVIS-API-DESIGN-v0.2.md`](.planning/architecture/JARVIS-API-DESIGN-v0.2.md);\nthe rollout phases are in\n[`.planning/architecture/JARVIS-API-MIGRATION-PLAN.md`](.planning/architecture/JARVIS-API-MIGRATION-PLAN.md).\n\n## Subsystems\n\nEvery subsystem is one SPM package under [`packages/`](packages/). The Bus\nsits in the middle as the only legal Swift↔JS channel.\n\n| Subsystem | What it does | Package |\n|-----------|--------------|---------|\n| Agent loop | Claude Opus 4.7 + Ollama via `LLMProvider`; tool-call loop; streaming events to a single broadcaster | [`packages/AgentCore`](packages/AgentCore) |\n| Bus | Typed JSON message bus over `WKScriptMessageHandler`; protocol-versioned; harness-parity-checked | [`packages/Bus`](packages/Bus) |\n| Voice | openWakeWord (`hey_jarvis`) + Silero VAD v6.2.1 + SpeechAnalyzer STT + AVSpeech / Orpheus TTS | [`packages/Voice`](packages/Voice) |\n| Vision | AVCaptureSession camera capture + frame-attach to a turn; T2 presence pipeline deferred | [`packages/Vision`](packages/Vision) |\n| Memory | SQLite with FTS5 + `sqlite-vec` (statically linked) + mem0 ADD/UPDATE/NOOP extractor on Qwen 2.5-Coder | [`packages/Memory`](packages/Memory) |\n| MCP | Model Context Protocol runtime — separately codesigned helper apps under `Contents/Helpers/` plus in-process tools | [`packages/MCP`](packages/MCP) |\n| Replay | Per-turn audit log to a local SQLite — user input, LLM output, tool calls, tool results | [`packages/Replay`](packages/Replay) |\n| BootHealth | Eight NOT FAKED probes feeding a strict-mode severity rollup that drives HUD chrome + agent preamble | [`packages/AgentCore`](packages/AgentCore) (`BootHealth*`) |\n| HUD | React + R3F particle ring + chat panel + Dev Overlay tabs | [`webview/`](webview) |\n\nSupporting packages: [`Config`](packages/Config), [`DevOverlay`](packages/DevOverlay),\n[`Harness`](packages/Harness) (`Mock*`/`Stub*`/`Fake*` doubles per the test naming\nconvention in `CLAUDE.md`), [`Keychain`](packages/Keychain), [`Logging`](packages/Logging),\n[`Shell`](packages/Shell), [`VoiceLog`](packages/VoiceLog).\n\n## Install order\n\nThe Swift host installs subsystems in a fixed DAG in\n`AppDelegate.applicationWillFinishLaunching`. Order is **load-bearing** —\n`packages/AgentCore`'s orchestrator constructor takes the `VisionRouter` (so\nVision installs first), Voice's adapters require the orchestrator and the\nturn-transcript store (so Agent installs before Voice). The\n[`scripts/check-install-order.sh`](scripts/check-install-order.sh) gate\nasserts the spawn-line ordering AND that `voiceInstallTask` awaits\n`agentInstallTask?.value` (a strictly stronger guarantee than spawn-order\nalone).\n\n```mermaid\nflowchart LR\n    Boot([applicationWillFinishLaunching]) --\u003e Vision[installVision]\n    Boot --\u003e Memory[installMemory]\n    Boot --\u003e MCP[installMCP]\n    Boot --\u003e Replay[installReplay]\n    Vision --\u003e Agent[installAgent]\n    Memory --\u003e Agent\n    MCP --\u003e Agent\n    Replay --\u003e Agent\n    Agent --\u003e Voice[installVoice]\n    Voice --\u003e Probes[registerBootHealthProbes]\n    Probes --\u003e Bridge[Webview handshake]\n    Bridge --\u003e Ready([HUD ready])\n```\n\n## Build \u0026 run\n\nRequires **Xcode 16+ on macOS 26 Tahoe (Apple Silicon)**. The Hardened\nRuntime needs `com.apple.security.cs.allow-jit` for the WKWebView JIT;\n`SpeechAnalyzer` needs `com.apple.developer.speech-recognition-assets`.\nBoth are wired in `App/Jarvis.entitlements` — do not strip them.\n\n**SPM packages (fast, offline, the default dev loop):**\n\n```bash\nswift test --package-path packages/AgentCore\nswift test --package-path packages/Bus\nswift test --package-path packages/Voice\nswift test --package-path packages/Memory\n# … one per package; full list in CLAUDE.md → Build / test.\n```\n\nSingle-test filter: `swift test --package-path packages/\u003cPkg\u003e --filter \u003cSuite\u003e/\u003ctest\u003e`.\n\n**App target** — `swift test` does not compile the App target under Xcode\n26 (the xctest harness is upstream-broken on ad-hoc Debug bundles), so use\nthe wrapper that drives `xcodebuild build -configuration Debug`:\n\n```bash\nbash scripts/check-app-builds.sh\n```\n\n**Webview (HUD bundle):**\n\n```bash\nbash scripts/build-webview.sh\n# or, during dev:\ncd webview \u0026\u0026 pnpm install \u0026\u0026 pnpm --filter @jarvis/hud dev\ncd webview \u0026\u0026 pnpm --filter @jarvis/hud test    # vitest\n```\n\n**Boundary gates (18 grep-based architectural invariants — run before pushing):**\n\n```bash\nfor s in scripts/check-*.sh; do bash \"$s\" || break; done\n```\n\nThe gates encode invariants the type system can't — single-writer\n`HUDState`, single-consumer orchestrator events, no `evaluateJavaScript`\noutside the Bus, vision isolation, presence-bus disallowed in TTS path,\nembedding-dim literal pinned, install order, applescript-confirmation,\nBus protocol version + harness parity, no leftover stubs, no modal\npresentation, and a handful more.\n\n**Real-hardware / real-network env-flag gates (interactive, opt-in):**\n\n```bash\nJARVIS_REAL_MODELS=1 swift test --package-path packages/Memory --filter MemoryRegressionCorpusTests\nJARVIS_REAL_CAMERA=1 swift test --package-path packages/Vision --filter CameraCaptureRealHardwareTests\nJARVIS_REAL_MODELS=1 swift test --package-path packages/Voice --filter OrpheusTTFATests\n```\n\n## Agent turn lifecycle\n\nEvery user turn flows through a single broadcaster and fans out to the\nsubscribers that need it. If a subsystem is degraded, the orchestrator\n**injects a system-prompt preamble** so the agent doesn't promise to\nremember things the memory store can't actually persist.\n\n```mermaid\nflowchart LR\n    In[User input\u003cbr/\u003etext / voice transcript] --\u003e Orch[AgentOrchestrator]\n    Health[BootHealth.rollup] --\u003e|degradation preamble| Orch\n    Orch --\u003e Provider[LLMProvider.stream]\n    Provider --\u003e Events[(streaming events\u003cbr/\u003etoken / thinking / tool-use / stop)]\n    Events --\u003e Bcast[Broadcaster\u003cbr/\u003esingle consumer]\n    Bcast --\u003e Tx[Transcript]\n    Bcast --\u003e Mem[Memory extractor]\n    Bcast --\u003e Dev[DevOverlay]\n    Bcast --\u003e Voice[Voice / TTS]\n    Bcast --\u003e Bus[WebviewBridge → HUD]\n    Orch --\u003e Tools[MCP tool calls]\n    Tools --\u003e Provider\n```\n\n## Boot-health probes\n\nEight probes run on a strict-mode escalation ladder:\n`ok → soft → loud → critical`. `.unknown(reason:)` is honest absence; a\nprobe never returns `.ok` when the dependency is actually broken. Critical\nfailures turn the menu-bar icon **red**, raise a non-dismissible HUD\nbanner, and inject the degradation preamble into the agent's system\nprompt.\n\n```mermaid\nflowchart LR\n    M[MemoryBootHealthProbe\u003cbr/\u003evec0 + FTS5 reachable]\n    A[AnthropicBootHealthProbe\u003cbr/\u003ekeychain has API key]\n    O[OllamaBootHealthProbe\u003cbr/\u003eservice reachable + model loaded]\n    Vc[VoiceBootHealthProbe\u003cbr/\u003eaudio graph alive]\n    Vi[VisionBootHealthProbe\u003cbr/\u003eAVCapture authorized]\n    Mc[MCPBootHealthProbe\u003cbr/\u003ehelper apps + in-proc tools]\n    R[ReplayBootHealthProbe\u003cbr/\u003eWAL writable]\n    W[WebviewBootHealthProbe\u003cbr/\u003ehandshake completed]\n    Roll[BootHealthOrchestrator.rollup]\n    Icon[Menu-bar icon\u003cbr/\u003ered on critical]\n    Banner[Non-dismissible banner]\n    Pre[Agent system-prompt\u003cbr/\u003edegradation preamble]\n    M --\u003e Roll\n    A --\u003e Roll\n    O --\u003e Roll\n    Vc --\u003e Roll\n    Vi --\u003e Roll\n    Mc --\u003e Roll\n    R --\u003e Roll\n    W --\u003e Roll\n    Roll --\u003e Icon\n    Roll --\u003e Banner\n    Roll --\u003e Pre\n```\n\n## Project culture\n\nA few opinions, encoded into the codebase as gates and conventions:\n\n- **In-code documentation only.** No sprawling `/docs` that goes stale the\n  day after it's written. The code teaches itself or it doesn't get\n  taught. The full philosophy lives in\n  [`.planning/code-commenting-guide.md`](.planning/code-commenting-guide.md).\n  This README is the one exception — it is documentation **of** the\n  documentation strategy, which is allowed.\n- **NOT FAKED probes.** Every subsystem has a live-probe boot-health\n  check. `.unknown(reason:)` is the honest answer when we can't tell;\n  `.ok` requires evidence. The audit-and-stabilize discipline came from\n  finding too many \"wired but dead\" subsystems that *looked* installed\n  but had no observable signal.\n- **Strict-mode escalation.** Soft failures are logged; loud failures\n  surface in the Status panel; critical failures take over the chrome and\n  the agent's system prompt. The user always knows when Jarvis is\n  degraded.\n- **18 boundary gates** encode architectural invariants the type system\n  can't (single-writer state, isolated subsystems, no rogue\n  `evaluateJavaScript`, pinned embedding dim, install order, …).\n- **Three-name test-double taxonomy.** `Mock*` records + scripts;\n  `Stub*` returns canned data; `Fake*` is a behaviorally-realistic\n  alternative implementation. Pick by role, not by sibling.\n- **Audit-and-stabilize cadence.** Multi-agent audits land under\n  `.planning/audit-YYYY-MM-DD/` (most recent:\n  [`audit-2026-05-12`](.planning/audit-2026-05-12/)) and surface\n  wired-but-dead bugs as GitHub Issues with severity + area labels.\n- **GitHub Issues is canonical.** All bugs, audit findings, and migration\n  work live as issues. `docs/TODO.md` is historical only.\n\n## Roadmap\n\nThe roadmap is owned by [GitHub Milestones](https://github.com/KofTwentyTwo/Jarvis/milestones)\n— user-outcome-focused, not subsystem-focused:\n\n| Milestone | Theme |\n|-----------|-------|\n| **v0.1** — *It actually works* | Closes the CRITICAL audit findings that break basic capabilities (voice, vision, facts, dialogs). Some get re-fixed during the API migration; v0.1 ships working NOW. |\n| **v0.2** — *Observable + stable* | Everything CRITICAL/HIGH from the 2026-05-12 audits that isn't a basic-capability blocker; tightens the observability surface; closes wired-but-dead gaps. |\n| **v0.5** — *API M-0..M-3* | Scaffold `JarvisAPI` package, dual-version Bus handshake, then land Self / Settings / Diagnostics typed surfaces. HUD state moves to Diagnostics. |\n| **v0.8** — *API M-4..M-7* | Memory / Vision / Voice / Turn typed surfaces. Per-turn `OutboundBatcher` partitioning. Webview retires the `sessionHistory` push. Bus protocol bumps to 2.4.0 strict after a 3-day soak. |\n| **v1.0** — *Shipping* | Code-commenting style applied to load-bearing files. Stale plan-id gate. Doc reconciliation. First-launch experience polish. |\n| **v1.1** — *Backlog* | Orpheus TTS tier 2 activation. WhisperKit STT fallback. Voice Log menu. Vision T2 sidecar. Presence pipeline. Advanced polish. |\n\nDay-to-day session handoff still lives in\n[`docs/SESSION-STATE.md`](docs/SESSION-STATE.md); milestone-level state in\n[`.planning/STATE.md`](.planning/STATE.md). Per-phase artifacts under\n[`.planning/phases/\u003cN\u003e/`](.planning/phases/).\n\n## Repository layout\n\n| Path | Purpose |\n|------|---------|\n| [`App/`](App) | Swift host — `AppDelegate`, MenuBar, HUD window, Settings, Wizard, MCP runtime wiring |\n| [`packages/`](packages) | 14 Swift packages (SPM) — one per subsystem |\n| [`webview/`](webview) | pnpm workspace — `@jarvis/bus` (TS mirror of the Swift Bus) + `@jarvis/hud` (R3F bundle) |\n| [`mcp-servers/`](mcp-servers) | Out-of-process MCP helper apps — `mcp-time`, `mcp-clipboard`, `mcp-applescript` |\n| [`scripts/`](scripts) | Build/codesign scripts and the 18 boundary-gate linters |\n| [`Resources/`](Resources) | Bundled assets — voice ONNX models, HUD bundle target, app icon source |\n| [`docs/`](docs) | Live cross-session state — `SESSION-STATE.md`, archived `TODO.md` |\n| [`.planning/`](.planning) | GSD workflow artifacts — phase plans, audit reports, research syntheses, architecture |\n| [`assets/`](assets) | Screenshots + diagrams (populated opportunistically) |\n\n## Key documents\n\n- [`ARCHITECTURE.md`](ARCHITECTURE.md) — deep architecture doc\n- [`CONTRIBUTING.md`](CONTRIBUTING.md) — dev environment setup, GSD workflow, commit conventions\n- [`CLAUDE.md`](CLAUDE.md) — settled architectural decisions, AI-agent collaboration conventions, issue-tracking policy\n- [`.planning/code-commenting-guide.md`](.planning/code-commenting-guide.md) — the in-code documentation philosophy\n- [`.planning/architecture/JARVIS-API-DESIGN-v0.2.md`](.planning/architecture/JARVIS-API-DESIGN-v0.2.md) — v1.0 typed-API contract (locked)\n- [`.planning/architecture/JARVIS-API-MIGRATION-PLAN.md`](.planning/architecture/JARVIS-API-MIGRATION-PLAN.md) — M-0..M-7 rollout\n- [`docs/SESSION-STATE.md`](docs/SESSION-STATE.md) — current session state\n\n## Contributing\n\nThis is a solo project. If you've stumbled across it and want to discuss\nsomething, the welcoming move is to\n[open a GitHub issue](https://github.com/KofTwentyTwo/Jarvis/issues/new).\nStyle, commit conventions, and the GSD workflow live in\n[`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n## License\n\nJarvis is released under the [MIT License](LICENSE). See\n[`.planning/decisions/license.md`](.planning/decisions/license.md) for\nthe rationale (solo personal project; no patent strategy or SaaS\nsurface to protect; MIT considered against Apache-2.0 / MPL-2.0 /\nAGPL-3.0 and chosen for minimum friction).\n\n## Acknowledgments\n\nJarvis stands on a stack of excellent open-source work. The most\nload-bearing dependencies:\n\n**LLM + agents**\n- [Anthropic Messages API](https://docs.anthropic.com/) — Claude Opus 4.7 as\n  the primary reasoning model.\n- [Ollama](https://ollama.ai) — local LLM runtime; Qwen 2.5-Coder for tool-\n  calling, `nomic-embed-text` for memory embeddings.\n- [Model Context Protocol Swift SDK](https://github.com/modelcontextprotocol/swift-sdk)\n  — typed `Client` / `Server` / `StdioTransport` so we don't roll our own\n  JSON-RPC framing.\n\n**Voice (fully local)**\n- [openWakeWord](https://github.com/dscripka/openWakeWord) — `hey_jarvis`\n  pretrained model running through ONNX Runtime.\n- [Silero VAD](https://github.com/snakers4/silero-vad) v6.2.1 — voice\n  activity detection.\n- [`onnxruntime-swift-package-manager`](https://github.com/microsoft/onnxruntime-swift-package-manager)\n  — wake-word + VAD inference in-process.\n- [`argmax-oss-swift`](https://github.com/argmaxinc/argmax-oss-swift) —\n  WhisperKit STT fallback + TTSKit streaming alternative.\n- [`mlx-audio-swift`](https://github.com/Blaizzy/mlx-audio-swift) — Orpheus\n  TTS via MLX, no Python sidecar.\n\n**Memory**\n- [SQLite](https://sqlite.org) + [FTS5](https://www.sqlite.org/fts5.html) —\n  keyword search and the canonical store.\n- [`sqlite-vec`](https://github.com/asg017/sqlite-vec) (via `sqlitevec`\n  SPM) — statically-linked vec0 vector extension.\n\n**HUD**\n- [React Three Fiber](https://r3f.docs.pmnd.rs/) + [Three.js](https://threejs.org/)\n  — particle ring, holographic chrome, agent-state-reactive shaders.\n- [pnpm](https://pnpm.io) + [Vite](https://vitejs.dev) — webview workspace\n  + bundle.\n\n**Swift platform**\n- [`swift-log`](https://github.com/apple/swift-log) — structured logging\n  feeding the Dev Overlay's Logs tab.\n- [`swift-nio`](https://github.com/apple/swift-nio) — async networking\n  primitives under MCP and HTTP providers.\n- [`yams`](https://github.com/jpsim/Yams) — YAML config parsing.\n\nThe full dependency graph lives in each package's `Package.resolved`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoftwentytwo%2Fjarvis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoftwentytwo%2Fjarvis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoftwentytwo%2Fjarvis/lists"}