cat / goq
clone

turns a linux box into a private steam streaming appliance: plug in, tap your key, play from another computer

Initial keyhome: FIDO2-secured remote desktop via Iroh

dami etoile committed 2ba4238
Spikes:
- 001: Iroh native ping (loopback, 2.6ms RTT)
- 002: YubiKey HMAC detection (DeviceNotFound, Titan incompatible)
- 003: FIDO2 CTAP via ctap-hid-fido2 (Titan detected, get_info + pin_retries)
- 004: HMAC-Secret -> Iroh identity derivation (deterministic EndpointId, 6.5ms ping)
- 005: Screen frame capture + JPEG stream over Iroh (1920x1080, 1.8fps)

Tauri app:
- Backend: FIDO2 device info, Iroh host start, client connect commands
- UI: dark-themed diagnostics dashboard

OpenSpec: 13/18 MVP validation tasks complete
commit
2ba42385ded3499d73fa8732a7933b2a403e1c67
author
dami etoile <dami.etoile@gmail.com>
65 files changed, +24907 -0
M.gitignore29+
MAGENTS.md28+
MREADME.md62+
Mdocs/evidence/2026-06-23-ctap-hid-fido2-titan-communication.md102+
Mdocs/evidence/2026-06-23-fido2-hid-raw-hidraw.md84+
Mdocs/evidence/2026-06-23-hmac-iroh-derivation.md78+
Mdocs/evidence/2026-06-23-iroh-native-ping.md46+
Mdocs/evidence/2026-06-23-yubikey-hmac-detection.md46+
Mdocs/evidence/README.md12+
Mdocs/research-yubikey-options.md40+
Mopenspec/changes/validate-tauri-yubikey-iroh-mvp/design.md57+
Mopenspec/changes/validate-tauri-yubikey-iroh-mvp/proposal.md50+
Mopenspec/changes/validate-tauri-yubikey-iroh-mvp/specs/viability-testing/spec.md34+
Mopenspec/changes/validate-tauri-yubikey-iroh-mvp/tasks.md34+
Mopenspec/ideas/.gitkeep0
Mopenspec/project.md32+
Mopenspec/specs/iroh-session/spec.md39+
Mopenspec/specs/remote-control/spec.md38+
Mopenspec/specs/yubikey-identity/spec.md53+
Mspikes/001-iroh-native-ping/Cargo.lock4119+++++++++++++++++
Mspikes/001-iroh-native-ping/Cargo.toml12+
Mspikes/001-iroh-native-ping/README.md52+
Mspikes/001-iroh-native-ping/src/main.rs89+
Mspikes/002-yubikey-hmac-detection/Cargo.lock338+
Mspikes/002-yubikey-hmac-detection/Cargo.toml10+
Mspikes/002-yubikey-hmac-detection/README.md46+
Mspikes/002-yubikey-hmac-detection/src/main.rs48+
Mspikes/003-fido2-hid-enumeration/Cargo.lock781+++
Mspikes/003-fido2-hid-enumeration/Cargo.toml8+
Mspikes/003-fido2-hid-enumeration/README.md41+
Mspikes/003-fido2-hid-enumeration/src/main.rs70+
Mspikes/004-hmac-iroh-derivation/Cargo.lock4471+++++++++++++++++++
Mspikes/004-hmac-iroh-derivation/Cargo.toml15+
Mspikes/004-hmac-iroh-derivation/README.md36+
Mspikes/004-hmac-iroh-derivation/src/main.rs179+
Mspikes/005-frame-stream/Cargo.lock5587+++++++++++++++++++++++
Mspikes/005-frame-stream/Cargo.toml16+
Mspikes/005-frame-stream/run-spike.sh44+
Mspikes/005-frame-stream/src/main.rs225+
Msrc-tauri/.gitignore4+
Msrc-tauri/Cargo.lock7240++++++++++++++++++++++++++++++
Msrc-tauri/Cargo.toml27+
Msrc-tauri/build.rs3+
Msrc-tauri/capabilities/default.json11+
Msrc-tauri/icons/128x128.pngbin
Msrc-tauri/icons/128x128@2x.pngbin
Msrc-tauri/icons/32x32.pngbin
Msrc-tauri/icons/Square107x107Logo.pngbin
Msrc-tauri/icons/Square142x142Logo.pngbin
Msrc-tauri/icons/Square150x150Logo.pngbin
Msrc-tauri/icons/Square284x284Logo.pngbin
Msrc-tauri/icons/Square30x30Logo.pngbin
Msrc-tauri/icons/Square310x310Logo.pngbin
Msrc-tauri/icons/Square44x44Logo.pngbin
Msrc-tauri/icons/Square71x71Logo.pngbin
Msrc-tauri/icons/Square89x89Logo.pngbin
Msrc-tauri/icons/StoreLogo.pngbin
Msrc-tauri/icons/icon.icnsbin
Msrc-tauri/icons/icon.icobin
Msrc-tauri/icons/icon.pngbin
Msrc-tauri/src/commands.rs199+
Msrc-tauri/src/lib.rs16+
Msrc-tauri/src/main.rs21+
Msrc-tauri/tauri.conf.json33+
Msrc/ui/index.html302+
M .gitignore +29 -0

Diff not shown: this commit changes too many lines.

M AGENTS.md +28 -0

Diff not shown: this commit changes too many lines.

M README.md +62 -0

Diff not shown: this commit changes too many lines.

M docs/evidence/2026-06-23-ctap-hid-fido2-titan-communication.md +102 -0

Diff not shown: this commit changes too many lines.

M docs/evidence/2026-06-23-fido2-hid-raw-hidraw.md +84 -0

Diff not shown: this commit changes too many lines.

M docs/evidence/2026-06-23-hmac-iroh-derivation.md +78 -0

Diff not shown: this commit changes too many lines.

M docs/evidence/2026-06-23-iroh-native-ping.md +46 -0

Diff not shown: this commit changes too many lines.

M docs/evidence/2026-06-23-yubikey-hmac-detection.md +46 -0

Diff not shown: this commit changes too many lines.

M docs/evidence/README.md +12 -0

Diff not shown: this commit changes too many lines.

M docs/research-yubikey-options.md +40 -0

Diff not shown: this commit changes too many lines.

M openspec/changes/validate-tauri-yubikey-iroh-mvp/design.md +57 -0

Diff not shown: this commit changes too many lines.

M openspec/changes/validate-tauri-yubikey-iroh-mvp/proposal.md +50 -0

Diff not shown: this commit changes too many lines.

M openspec/changes/validate-tauri-yubikey-iroh-mvp/specs/viability-testing/spec.md +34 -0

Diff not shown: this commit changes too many lines.

M openspec/changes/validate-tauri-yubikey-iroh-mvp/tasks.md +34 -0

Diff not shown: this commit changes too many lines.

M openspec/ideas/.gitkeep +0 -0

Diff not shown: this commit changes too many lines.

M openspec/project.md +32 -0

Diff not shown: this commit changes too many lines.

M openspec/specs/iroh-session/spec.md +39 -0

Diff not shown: this commit changes too many lines.

M openspec/specs/remote-control/spec.md +38 -0

Diff not shown: this commit changes too many lines.

M openspec/specs/yubikey-identity/spec.md +53 -0

Diff not shown: this commit changes too many lines.

M spikes/001-iroh-native-ping/Cargo.lock +4119 -0

Diff not shown: this commit changes too many lines.

M spikes/001-iroh-native-ping/Cargo.toml +12 -0

Diff not shown: this commit changes too many lines.

M spikes/001-iroh-native-ping/README.md +52 -0

Diff not shown: this commit changes too many lines.

M spikes/001-iroh-native-ping/src/main.rs +89 -0

Diff not shown: this commit changes too many lines.

M spikes/002-yubikey-hmac-detection/Cargo.lock +338 -0

Diff not shown: this commit changes too many lines.

M spikes/002-yubikey-hmac-detection/Cargo.toml +10 -0

Diff not shown: this commit changes too many lines.

M spikes/002-yubikey-hmac-detection/README.md +46 -0

Diff not shown: this commit changes too many lines.

M spikes/002-yubikey-hmac-detection/src/main.rs +48 -0

Diff not shown: this commit changes too many lines.

M spikes/003-fido2-hid-enumeration/Cargo.lock +781 -0

Diff not shown: this commit changes too many lines.

M spikes/003-fido2-hid-enumeration/Cargo.toml +8 -0

Diff not shown: this commit changes too many lines.

M spikes/003-fido2-hid-enumeration/README.md +41 -0

Diff not shown: this commit changes too many lines.

M spikes/003-fido2-hid-enumeration/src/main.rs +70 -0

Diff not shown: this commit changes too many lines.

M spikes/004-hmac-iroh-derivation/Cargo.lock +4471 -0

Diff not shown: this commit changes too many lines.

M spikes/004-hmac-iroh-derivation/Cargo.toml +15 -0

Diff not shown: this commit changes too many lines.

M spikes/004-hmac-iroh-derivation/README.md +36 -0

Diff not shown: this commit changes too many lines.

M spikes/004-hmac-iroh-derivation/src/main.rs +179 -0

Diff not shown: this commit changes too many lines.

M spikes/005-frame-stream/Cargo.lock +5587 -0

Diff not shown: this commit changes too many lines.

M spikes/005-frame-stream/Cargo.toml +16 -0

Diff not shown: this commit changes too many lines.

M spikes/005-frame-stream/run-spike.sh +44 -0

Diff not shown: this commit changes too many lines.

M spikes/005-frame-stream/src/main.rs +225 -0

Diff not shown: this commit changes too many lines.

M src-tauri/.gitignore +4 -0

Diff not shown: this commit changes too many lines.

M src-tauri/Cargo.lock +7240 -0

Diff not shown: this commit changes too many lines.

M src-tauri/Cargo.toml +27 -0

Diff not shown: this commit changes too many lines.

M src-tauri/build.rs +3 -0

Diff not shown: this commit changes too many lines.

M src-tauri/capabilities/default.json +11 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/128x128.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/128x128@2x.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/32x32.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/Square107x107Logo.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/Square142x142Logo.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/Square150x150Logo.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/Square284x284Logo.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/Square30x30Logo.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/Square310x310Logo.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/Square44x44Logo.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/Square71x71Logo.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/Square89x89Logo.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/StoreLogo.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/icon.icns +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/icon.ico +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/icons/icon.png +0 -0

Diff not shown: this commit changes too many lines.

M src-tauri/src/commands.rs +199 -0

Diff not shown: this commit changes too many lines.

M src-tauri/src/lib.rs +16 -0

Diff not shown: this commit changes too many lines.

M src-tauri/src/main.rs +21 -0

Diff not shown: this commit changes too many lines.

M src-tauri/tauri.conf.json +33 -0

Diff not shown: this commit changes too many lines.

M src/ui/index.html +302 -0

Diff not shown: this commit changes too many lines.