Skip to content

About

Native macOS hardware-control app for low-latency local actions and dictation.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

33 Commits

Folders and files

Repository files navigation

Hardware Controller

A native macOS app that turns a VEC Infinity 3 foot pedal into low-latency Actions (Local Dictation, Local AI Dictation, keyboard shortcuts), plus the iOS Voice Input app and keyboard. Everything runs on-device: no accounts, telemetry, or cloud inference.

Quick start

Requires Apple silicon, macOS 15+, Xcode 26+, and rustup (Rust is pinned).

git clone https://github.com/MarcusJRLee/hardware_controller.git
cd hardware_controller
scripts/run_demo.sh   # Deterministic demo; no pedal, signing, or permissions.
scripts/check.sh      # Everything the Verify CI job runs.

Commands

Goal Command Needs
Run the demo scripts/run_demo.sh —
Verify macOS, Rust, and the C bridge scripts/check.sh —
Verify only Rust and the C ABI scripts/check_rust.sh —
Verify the iOS app scripts/check_ios.sh XcodeGen, simulator, rustup target add aarch64-apple-ios aarch64-apple-ios-sim
Install the signed Mac app scripts/install_app.sh .env.local signing values
Smoke-launch a built app scripts/smoke_app.sh <bundle> [--demo | --installed] —
Prove the installed speech service scripts/check_speech_engine.sh [APP] (run by every install) A signed app
Install the iOS app on a phone scripts/install_ios.sh Unlocked iPhone in Developer Mode, .env.local
Prepare an extra iOS model package scripts/prepare_ios_asr_model_package.sh <dir> Network during preparation only
Benchmark ASR models scripts/benchmark_asr.sh [--model m.gguf] [--manifest m.tsv] —

Signing values live in the ignored .env.local (copy .env.example). install_app.sh is the only install path: it refuses ad-hoc or expired identities, verifies Team, entitlements, hardened runtime, Apple-only libraries, and unchanged version metadata, replaces the one /Applications/Hardware Controller.app, re-verifies it, and proves the installed bundle launches and stays up.

benchmark_asr.sh prints p50/p95/p99/max latency, median real-time factor, and word error rate. Without --manifest it synthesizes speech with say, which measures cost, not quality; for quality, list your own clips as id<TAB>clip.wav<TAB>reference in an ignored TSV.

Opt-in system checks (real microphone, speech, focused fields, local models) are listed in CONTRIBUTING.md.

Style

Calm, tactile, precise: a studio utility, not a settings form. Neutral surfaces, system typography, no decorative borders, and one strong action per workflow. Color appears only for active state, required attention, or errors. The icons, Center Signal, are rounded capsules on graphite with only the center lit amber: three pedals for Hardware Controller, a voice waveform for Voice Input (swift tools/app_icons/render_app_icons.swift). Details: UX specification.

Documentation

Path What it holds
User guide Setup, daily use, privacy, troubleshooting.
Product brief Scope, canonical language, approved boundaries.
Architecture Components, data flow, concurrency, persistence, security.
Voice journeys Every critical user journey and the test that proves it.
Game plan Quality gates, open evidence, risks.
UX specification Visual and accessibility contract.
Contributing Workflow, source map, test placement, Drivers.
Decisions Durable, append-only decision records.
Infinity 3 evidence Device protocol evidence.
Public distribution Gated Developer ID and notarization runbook.
Local AI model evaluation Model measurements behind the recommendation.

A version number is not release approval: no release script, DMG, tag, or GitHub Release without explicit approval for that exact version.

Licensed under Apache 2.0; copyright Marcus John Rice Lee (NOTICE, BRANDING).

About

Native macOS hardware-control app for low-latency local actions and dictation.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages