Repository navigation
Conversation
Records the shape for making one main machine authoritative over its paired Orca hosts, in a tracked reference doc. The proposal: settings and provider credentials replicate to each paired host, local UI state stays local, and a subordinate keeps working while the main is offline — which is why this is replication rather than resolving credentials across hosts at read time, the cheaper option that makes every host depend on the laptop being awake. It records what already exists to build on rather than proposing a new subsystem: profile transfer's per-field disposition table gains a third axis, cloud profiles supply the identity layer, and the paired-runtime capability surface carries the change. It also records the prerequisite and the unresolved questions. The Jira, Jenkins, Bitbucket, zcode, API-key and floating-workspace stores still hardcode `~/.orca`, which this fork's own directory module says would let an official Orca install read, migrate or clobber this fork's state — replicating settings into a shared directory would corrupt both installs. And secrets are the hard part: a replicated token is stored on the receiver, revocation has to reach every host that received it, and a weaker keyring silently downgrades protection. Tracked rather than local-only because this fork has issues disabled, so a tracked doc is the only durable capture. `.gitignore` allow-lists reference docs by name; this adds the entry.
|
Closing in favour of #54, which now carries the full proposal — issues were disabled on this fork when I opened this, so a tracked doc was the only durable capture. The working note stays local at |
|
Correction to the closing comment: the working note does not stay local at that path. Deleting this branch removed it — switching back to the Jira branch deleted the file, since it was tracked here and untracked there. I restored it from issue #54's body, so the working tree matches the issue again. |
…f the deprecated owner resolver; spawn refuses folder twins (stablyai#30497) * refactor(renderer): fold launch, resume, note-send, paste and terminal-create callers off the deprecated owner resolver Agent launch, AI-vault resume and reveal, note target and send, wake and creation seeds, native chat owner, the shell menu and active-workspace terminal creation (#22, #31-#42, #44) read the owner through runtimeEnvironmentIdWithLegacyFallbackUnlessTwin. Paste uploads images to the server its PTY id names before falling back to the workspace owner. The folder and floating branch of the terminal spawn route (#53) reads resolveOwnerWithLegacyFallback: spawn refuses a folder twin instead of following the focused server, and teardown keeps tearing raw ids down locally. Deprecated importers 31 -> 16. * test: give the paste-listener and tab-bar probes the fields the folded callers read * test: note why the folder-twin route fixture is cast * test: type the paste-owner twin fixture
ELI5
I have one main machine and several paired Orca hosts. Right now each host has to be configured by
hand — its own settings, its own Jira and provider connections. I want the main machine to be
authoritative: it pushes its settings to the paired hosts, and they mostly just use them.
This PR is only the design. It writes down the shape, why the obvious alternatives are wrong, what
already exists to build it on, and the questions that have to be answered before anyone writes code.
No behaviour changes.
What Changed
Before: nothing was written down. The idea had been discussed only in conversation, and the
tempting shortcut — "just resolve credentials across hosts when someone reads a ticket" — is
subtly wrong in a way that would have been discovered late.
After:
docs/reference/host-settings-replication.mdrecords the proposal, and this fork's.gitignoreallow-lists it (reference docs are listed by name there).Why
Replication, not proxying. The main laptop is often asleep. If a paired host resolves
credentials by asking the main, its ticket panel simply stops working whenever the laptop is away.
So each host holds its own copy — which is also why
localandssh:*reads being served by thelocal app today is not the same thing.
Build on what exists. Profile transfer already moves a profile between hosts, and
profile-project-session-field-disposition.tsdecides each field's fate through explicit axes(
onRepoRemoval,onTransfer). Replication is a third axis on that table, with the valuesreplicated/hostLocal/replicatedOnlyIfEmpty— plus cloud profiles as the identity layer.The new part, and the risky one, is that nothing in
orca-profilestransfers credentials today.Two things worth knowing before the work starts. First, it is blocked on a path fix: the Jira,
Jenkins, Bitbucket, zcode, API-key and floating-workspace stores still hardcode
~/.orca, whichthis fork's own directory module says would let an official Orca install read, migrate or clobber
this fork's state — replicating settings into a shared directory would corrupt both installs.
Second, secrets are the hard part: a replicated token is stored on the receiver, revocation has to
delete it on every host that received it, and a weaker keyring silently downgrades at-rest
protection.
An issue would have been the natural home for this, but this fork has issues disabled, so a tracked
document is the durable capture.
Linked Issue
N/A — issues are disabled on
nplez1/orca.Visual Proof
N/A — documentation only; no UI or behaviour change.
Testing
Docs only: no code, tests or behaviour changed.
pnpm tc,oxlintand the changed-lines gate areunaffected; the only non-doc change is a
.gitignoreallow-list entry.AI Disclosure
Claude (Anthropic) wrote this document from the fork owner's description of their topology, and
checked its claims (the disposition table, the hardcoded
.orcapaths, the capability surface)against the code.
Review
Self-reviewed. The claims in the document about existing machinery cite the files they come from.
Agent skill upstream boundary
docs/reference/agent-skill-sharing-upstream-boundary.mdand copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.Notes
that implicit.
including remote ones; the wire rules it must follow are referenced rather than restated.
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)