Skip to content

Manage harness runtimes per device and encrypt shared accounts - #335

Closed
wingleeio wants to merge 8 commits into
mainfrom
zeron/cross-device-auth-access
Closed

Manage harness runtimes per device and encrypt shared accounts#335
wingleeio wants to merge 8 commits into
mainfrom
zeron/cross-device-auth-access

Conversation

@wingleeio

@wingleeio wingleeio commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

This draft separates Accounts from Harnesses and makes runtime selection explicit on each execution device. Each harness expands into device rows showing installation status, version, enablement, and installation controls. Accounts contains account identity, usage, and encrypted device access. Neither page needs a device switcher.

The login-once goal is still incomplete. Shared API-key credentials work across approved devices, but ordinary subscription login flows still produce native account slots. Shared browser onboarding, provider-specific renewal with refresh ownership and crash recovery, delivery to running harnesses, and shared subscription usage remain required before merge. Successful current-token transfer probes do not substitute for those features.

Managed installations cover Codex 0.153.3, Claude Code 2.1.258, Grok 1.0.4, Devin 3000.10.21, OpenCode 1.18.21, Pi 0.85.1 with pi-acp 0.0.33, and Cursor SDK 1.0.28. Existing installations remain an explicit option; Cursor uses its managed SDK, and Hermes currently supports existing installations only.

  • Bundled npm dependency locks and integrity hashes, pinned Devin archive checksums, bounded extraction, immutable launchers, atomic selection, cross-process installation locking, and rollback. New sessions get fresh drivers; existing processes retain their runtime.
  • Pi receives the exact selected executable and uses the pinned ACP adapter. Codex sign-in follows runtime selection. Cursor's model-catalog write now finishes before exit, fixing truncated JSON beyond the pipe buffer.
  • Legacy account snapshots migrate to authenticated encryption using OS-protected keys. Invalid files remain intact; no plaintext fallback or backup. New vault setup begins automatically; recovery-key confirmation and device approval remain explicit.
  • Installation jobs survive closing Settings. Offline and failed-install states remain visible in the device row. Unix shared-account homes retain device-local plugin/skill directories without syncing them as account data.

Limitations: npm/Node must currently be available for npm-based installation; bare-device Node bootstrap, a pinned Hermes installer, and JavaScript launcher installation on Windows are pending. Subscription lifecycle integration and independent security review remain merge requirements.

Validation:

Check Result
Managed installation and version checks All seven supported managed runtimes passed on Linux x86-64
Native protocols Codex/Claude/Grok/Devin/OpenCode/Pi initialized; Cursor returned a complete live model catalog
Authenticated managed-runtime prompts Codex/Claude/Grok/Devin/OpenCode returned ZERON_AUTH_OK in fresh and restarted credential-only homes; original stores hidden; source hashes unchanged; temporary secrets removed
Runtime selection Separate-process persistence, failure preservation, repeated selection, rollback, cross-process exclusion, and corrupt-selection repair
Real-worker credential E2E 4 passed: pairing/recovery/revocation, shared accounts, exact ciphertext replay after crash, second-device launch without source device
Engine library 186 passed
Account/storage integration 14 passed, including encrypted migration and corruption preservation
Harness library 121 passed, including large Cursor stdout and pinned dependency graphs
Settings UI 66 passed
UI compilation and native captures Passed after merging current main

See runtime decision and validation and native authentication probes for the evidence and remaining acceptance criteria.

Screenshots below are native application captures using synthetic devices/accounts. They document the implemented UI, including API-key flows; they are not evidence of completed subscription onboarding or real cloud-agent renewal.

Page / state Screenshot
Harnesses · devices, installed versions, offline state Harnesses · devices, installed versions, offline state
Harnesses · install, existing path, rollback · dark Harnesses · install, existing path, rollback · dark
Harnesses · management controls · light Harnesses · management controls · light
Harnesses · background installation Harnesses · background installation
Harnesses · interrupted installation and retry Harnesses · interrupted installation and retry
Accounts · overview Accounts · overview
Accounts · identities and usage · dark Accounts · identities and usage · dark
Accounts · identities and usage · light Accounts · identities and usage · light
New vault · recovery key shown automatically New vault · recovery key shown automatically
Save recovery key Save recovery key
Encrypted device access ready Encrypted device access ready
New device requires approval New device requires approval
Pairing comparison code Pairing comparison code
Approve a matching device Approve a matching device
Device approved Device approved
Manage approved devices Manage approved devices
Ready to connect an account Ready to connect an account
Add a shared API-key account Add a shared API-key account
Shared account connected Shared account connected
Switch the active shared account Switch the active shared account
Remove a shared account Remove a shared account
Hermes · API-key provider options Hermes · API-key provider options
Concurrent account change · retry error Concurrent account change · retry error
Return to accounts after dismissing the dialog Return to accounts after dismissing the dialog
Review device access before removal Review device access before removal
Remove device access Remove device access
Removed device state Removed device state
Recover using a recovery key Recover using a recovery key
Recovered device Recovered device
Device access after recovery Device access after recovery
Locked OS credential store Locked OS credential store

Adapt the common vault substrate from PR #252 at 899c5b6. Add signed credential revisions, durable retry, profile isolation, provider launch contexts, and real-worker multi-device tests. Keep subscription OAuth grants local pending supported refresh-owner adapters.
Exercise setup, approval, account actions, recovery, revocation and failure states through the native screenshot fixture. Add a reproducible Linux capture script and fix recovery-warning wrapping and device/store labels exposed by the captures.
@wingleeio wingleeio changed the title Share encrypted API credentials across devices and unify Agents settings Manage harness runtimes per device and encrypt shared accounts Sep 12, 2026
@wingleeio wingleeio closed this Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants