Skip to content

🖥️ Desktop: gateway cloud endpoints - #4597

Open
jeff-hykin wants to merge 337 commits into
jeff/fix/gateway_fixesfrom
jeff/feat/gateway_cloud
Open

jeff-hykin wants to merge 337 commits into
jeff/fix/gateway_fixesfrom
jeff/feat/gateway_cloud

Conversation

@jeff-hykin

Copy link
Copy Markdown
Member

The gateway's Dimensional cloud endpoints: /cloud/account, /cloud/login and the /cloud/uploads queue.

…nd site-packages file times, a burst settled for 1.5 s), re-lists in a child and sends a blueprints event {added, removed} with its list cache refilled; Desktop no longer has to
… picks and enums with when, GlobalConfig reflected, robot types; no modes, tags, groups or recommended apps
…looding site-packages re-lists once) plus a 10 s throttle between re-listings
…r demo-camera module has one (main's vis change dropped WebsocketVisModule from it)
… dds: go2-dds, go2-dds-mid360, go2-dds-nav, go2-dds-nav-viewer)
…ic, basic, phone driving (keyboard driving dropped: Desktop drives every blueprint from the keyboard)
… as written (PascalCase), with a touch of the accent
…tomize had flipped it to true when the file was generated)
…LCM codec generated from dimos/msgs (python -m dimos.gateway.msgs), warning about hand-written messages
…n as it's hovered, and is six and a half rows tall with no scrollbar (the half row says it scrolls)
…a module's group was named .module and picked up the side panel's row padding); narrower inputs on a phone
…ed only msgs.js, so /dimos/msgs.ts 404ed in a pip install)
…ST /dimos/skills/call, and POST /dimos/mcp (list_skills, call_skill) for an agent; through each run's own MCP server with McpAdapter (API 1.13.0)
…mcp-port after run <blueprint> isn't in the registry's overrides)
…'s config.yaml dimos_gateway.port, else 5557), no unix socket; refuses non-loopback Host and other sites' Origin (loopback.py); dimos.yaml start: passes $DIMOS_GATEWAY_PORT, no socket:
…dimos.yaml start: passes --socket "$DIMOS_SERVER_SOCKET" and socket: prints it again; no loopback.py (a 0600 unix socket isn't reachable from a browser)
…og dir names it), so Logs stays enabled; GET /dimos/blueprint_view?view=logs&run=<runId> opens on that run's Logs; API 1.14.0

(cherry picked from commit 4df2d2b2e2a91a5441bbb6e31b42deb2a0d44d24)
…(its whole process group, then every port it listened on free) and a launch is refused while any other dimos run is on this machine (two share module RPC names, so one's start/stop reached the other's modules); a launch's log dir is the one its process holds open; Relaunch has a red border on a live run and is grayed with a spinner (Stopping…, Starting…) while a run starts or stops; API 1.14.1

(cherry picked from commit a566805bc32fda306ad199ec327eb8989382fc34)
… runs with, for dimcode's agent to use dimos's python API (API 1.15.0) (cherry picked from commit 07202363ba)
…over dimos's module RPC (Coordinator/list_modules, then each module's get_skills, the schema McpServer gives an agent) and called as <module>/<skill> on the same RPC; a skill holding a capability goes through the run's McpServer when one answers so its agent's locks cover it; args checked against params first; no more per-run MCP servers or runs[].up (API 1.16.0)
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Oct 22, 2026
Base automatically changed from jeff/feat/dimos_server to main October 22, 2026 14:43
… a 404 and a "did you mean" before anything is spawned, instead of returning 200 and dying seconds later; the names come from the blueprint listing plus the finished module scan, so a cold or half-scanned gateway still leaves the name to dimos (outside tester's patch 0001, I-009)
…y's GET /history/recordings is the answer to where it is

A recording started from Desktop never appeared where Desktop and its apps look for it: the
gateway resolved `recordings.dir` from the shared config.yaml and answered /history/recordings
with it, but the `dimos run` it spawned was never told, so dimos fell back to
`RECORDINGS_DIR`, the checkout's own `recordings/`. The gateway knew the right answer and the
run never heard it.

dimos now resolves the directory itself, in one place (dimos.utils.shared_config.recordings_dir:
`--record-dir`, else `recordings.dir` from the shared config.yaml, else RECORDINGS_DIR as
before), and the gateway hands every launch the directory its endpoint answers with as
`--record-dir` (a new GlobalConfig field, so it is also a documented flag on `dimos run`),
which is what makes the answer and the path a run writes to the same path by construction
rather than by two implementations agreeing. The gateway's own store.setting/recordings_dir
now delegate to dimos's, so there is a single reader of config.yaml.

Everything that writes a recording follows that one directory: --record (tap), a recorder
module outside a run (default_recording_dir), the run's rerun.rrd, the imitation session db,
the mid360 pcap; and so does everything that reads one back, `dimos cloud upload`'s list and
the evals' wait. Dataset resolution looks in the recordings directory as well as the checkout,
so `--replay-db <run-id>/memory.db` finds a recording made before the directory was configured
and one made after; an absolute path was always fine.

A plain `dimos run` from a checkout with no config.yaml is untouched: it still writes
`<checkout>/recordings/<run-id>/memory.db`. dimos' conftest pins DIMOS_HOME at a temp dir so a
developer's own config.yaml can't move where a test writes.
@github-actions github-actions Bot removed the ready-to-merge Required CI checks have passed on this PR label Oct 24, 2026
@jeff-hykin
jeff-hykin changed the base branch from main to jeff/fix/gateway_fixes October 24, 2026 19:45
…f/feat/gateway_cloud

# Conflicts:
#	dimos.yaml
#	docs/usage/gateway.md
#	experimental/gateway/app.py
#	experimental/gateway/constants.py
#	experimental/gateway/responses.py
#	experimental/gateway/routes/server.py
#	experimental/gateway/state.py
#	experimental/gateway/tests/test_jobs.py
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Oct 25, 2026
@github-actions github-actions Bot removed the ready-to-merge Required CI checks have passed on this PR label Oct 25, 2026

This branch was successfully deployed

1 active deployment
cachix — a1379de6 Deployed Oct 25, 2026 by jeff-hykin via cachix-build #14260
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.

1 participant