Repository navigation
Description
Disposition — 2026-10-20
Closed as not planned: the proposed second serving model is discontinued.
This includes in-process standalone graph hosting, generated local credentials,
graph-owner discovery, attach/reuse, and the later proposal for Studio to start
and own a serve --reuse process. This disposition supersedes those proposals
in the issue body and discussion.
OmniGraph retains the ordinary cluster-backed server on localhost and remote
hosts. Studio may connect to that existing HTTP server. Independent client
integration remains in draft #1017; it does not revive local hosting or an owner
registry. Implementation PRs #1075, #1077 and #1083 are closed without merging.
Historical proposal
Problem
There is no way to open a graph in Studio, OmniGraph's desktop client, from the CLI. A local graph also has no owning process for later CLI commands to attach to.
Proposal
omnigraph studio
- Resolve the target the way other commands do (
--store,--cluster --graph,--server --graph, profile). - For a local target, serve it in process on loopback. Bind
127.0.0.1:0; refuse any otherHost, refuse a mismatchedOrigin, send no CORS headers. - For a server target, pass the server through.
- Mint a per-launch token for
operator.actor, and open Studio with a single-use code:omnigraph-studio://connect?code=…. Studio already registers theomnigraph-studioscheme and handlesgraph,nodeandquerylinks;connectis the missing route. Studio redeems the code once at the loopback server for its token. - Never put a token in argv. Print the URL;
--no-open --jsonfor SSH and agents. - Include the launching binary's path and HTTP contract in the handoff, so Studio can give agent sessions on that graph the same CLI.
Owner discovery
- A file under
$OMNIGRAPH_HOMEnames the process, port and session that own a graph root. - A second
omnigraph studioattaches instead of opening a second writer, and CLI commands against that root can route through it. - Discovery only: publication safety stays with the manifest version CAS. A process-local lock is not distributed fencing.
Writer-safety rules for local sessions:
- default to read-only;
- never take cluster admission from Studio;
- refuse writes without an actor;
- never replay a write whose outcome is unknown.
Depends on a supported local-embedding constructor in omnigraph-server instead of the test-shaped helpers. Read-only mode must refuse mutating routes at the router.
Activity
ragnorc commentedon Oct 16, 2026
Design is in RFC draft #1017. It departs from this issue in four places:
directory (
0600) carries the session's URL and token instead; Jupytershipped a single-use token in argv and removed it for the same reason.
omnigraph studiois a thin launcher, ascodex appis: it opensomnigraph-studio://open?target=NAMEand exits, and Studio owns itssessions through
omnigraph serve --reuse.not route through it automatically (RFC 0009 rejects that funnel).
--sessionroutes a write explicitly.tokens come from
omnigraph credential, and OAuth for managed clusters issplit out (Appendix A4).
Wider changes found along the way are in the RFC's Appendix A: #1018
(cross-process writer safety), #1019 (what a credential allows), #1020
(
WWW-Authenticateon every 401), #1021 (retire the test-shapedAppStateconstructors), and the defects #1022, #1023 and #1024.
docs(rfc): propose local graph sessions and client access
rfc: graph access and cross-process writes (ModernRelay#1017)