Repository navigation
feat: add personal robot registrations to connections hub #1144
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
klsdjft
wants to merge
2
commits into
EverMind-AI:main
Choose a base branch
from
klsdjft:codex/server_robot_registry
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
| # Personal robot registrations | ||
|
|
||
| The Connections hub separates **Machines**, where Raven may run an agent through | ||
| its existing SSH/node support, from **Robots**, which are device records without | ||
| an execution node. Existing machine IDs, configuration, SSH credentials, CLI | ||
| commands, `machines.*` methods, and the Machines label are unchanged. | ||
|
|
||
| The Robots tab supports adding, searching, filtering, editing, moving records to | ||
| trash, and restoring them. Registration does not establish a connection. | ||
| Company devices and credentials are out of scope: the form blocks company | ||
| registration, and the runtime accepts only explicitly confirmed personal records. | ||
| Use independently governed instances for other security domains rather than | ||
| mixing their data into the personal registry. | ||
|
|
||
| ## Optional read-only status | ||
|
|
||
| SparkBot and generic HTTP devices can have a status URL. Robot dogs, AGVs, mobile | ||
| manipulators, and other device types support metadata only. No robot is treated | ||
| as a Machine and no executable node is installed. | ||
|
|
||
| Only **Check status** contacts a device. It sends one GET, without credentials, | ||
| proxies, or redirects, to a literal RFC1918 IPv4 address whose path is `/health` | ||
| or `/status`. Ports are limited to 80, 443, or 1024-65535. DNS names, public, | ||
| loopback, and link-local addresses, credentials, query parameters, and fragments | ||
| are rejected. The timeout is three seconds and the uncompressed JSON response limit is 16 KiB. | ||
| Compressed responses and non-standard numeric constants are rejected. | ||
| An optional expected `project` value prevents accepting a different device. | ||
| Only a bounded allowlist of health fields is retained. | ||
|
|
||
| The states are unknown, not connected, error, and status endpoint reachable. | ||
| `ok: true` confirms the status endpoint only: it does not establish chassis, | ||
| audio, or motion acceptance. Results expire after 60 seconds, including when a | ||
| page remains open. Failed and malformed responses are never shown as online. | ||
| There is no scanning or background device polling and no control, shell, ROS, | ||
| MQTT, motion, or media endpoint. | ||
|
|
||
| ## Persistence and compatibility | ||
|
|
||
| The existing authenticated RPC transport serves `robots.list`, `robots.save`, | ||
| `robots.remove`, `robots.restore`, and `robots.check`. Web clients use the same | ||
| typed transport and source seam as the other hub tabs. An older gateway without | ||
| these methods produces an unavailable message rather than invented records. | ||
| Offline fixtures never contact a real device or claim it is connected. | ||
|
|
||
| Records live under `robots/<config-stem>/personal/devices.sqlite3` beside the | ||
| resolved configuration file. Separate configuration files have separate stores; | ||
| the default is therefore under the instance's Raven home. The directory is | ||
| owner-only and the database is owner-readable/writable on POSIX. Records are | ||
| limited to 100, including trash. Removal is recoverable; restoring or editing a | ||
| record clears its old health observation. Revisions prevent a stale editor or | ||
| an overlapping health request from overwriting a later edit or removal. | ||
|
|
||
| The feature does not modify the Machine registry or model/provider configuration. | ||
| Reverting the code leaves the separate database intact and stops exposing the | ||
| tab and RPC methods. Reapplying the feature reopens those registrations. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Blocking: the GUI relabels the canonical Machine concept as "Servers" (zh: the word for "server"), which is the word CONTEXT.md's Machine entry rules out. CONTEXT.md is left unchanged, so it now contradicts the page.
What changed.
gui.hub.machinesgoes from{"en": "Machines", "zh": <"machine">}to{"en": "Servers", "zh": <"server">}(i18n/messages.json:3410).ui-web/CONTEXT.md("not server registrations"),docs/robot-registration.md("separates Servers, where Raven may run an agent", "No robot is treated as a server"), and ui-web comments (state/hub.ts,HubHead.tsx,store.ts,manifest.ts).What CONTEXT.md still says.
_Avoid_: "host" / "server" / "node" (too broad, no link to the ops connection registry that supplies the rows)at :504.Rule. AGENTS.md section 6: naming a concept tracked in CONTEXT-MAP.md means using the canonical term, not a synonym; a new term is defined in the matching CONTEXT.md in the same change.
Fix, either:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Blocking: the Machine-to-Server relabel conflicts with the repository canonical terminology.
This newly raised conflict makes my prior clean stance stale.
CONTEXT.mddefines the registry concept as Machine, explicitly listsserverunder_Avoid_, and still names the Machines tab, while this revision relabels that same concept throughout the GUI and new documentation without changing the canonical definition. Until the author either keeps Machine or makes the product rename consistent in the canonical context and affected surfaces, I no longer consider this revision mergeable. This is a stance update based on the existing thread, not a separate finding.No code has changed since the already reported test run; this objection is the repository term-contract mismatch itself.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No blockers; this can merge as far as I am concerned.
My terminology objection is settled on
daeee4b3ae79: the existing execution-host concept is again Machines in the catalogue, generated text, documentation, RPC module description, and UI comments, while Robots remains separate. I found no residual Machine-to-Server relabel in the feature diff.I am not resolving this review thread because it was opened by another reviewer.