Skip to content

docs(beast): cockpit bridge enabled and verified live on beast-01 - #163

Merged
Coldaine merged 1 commit into
mainfrom
docs/beast-cockpit-live
Aug 3, 2026
Merged

docs(beast): cockpit bridge enabled and verified live on beast-01#163
Coldaine merged 1 commit into
mainfrom
docs/beast-cockpit-live

Conversation

@Coldaine

@Coldaine Coldaine commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

User description

Updates the Quick connect block to current verified state (2026-08-03):

  • Monorepo cutover deployed (legacy ugv_ws gone; workspace at ~/beast/RobotOverview/robot/beast/ros2_ws).
  • beast-cockpit.service now enabled and active (was disabled/inactive).
  • Rosbridge up on 127.0.0.1:9090, fronted by tailscale serve --https=443.
  • DISARM/RE-ARM round trip via /ugv/set_allow_motion verified over the bridge; allow_motion left true (armed).

CodeAnt-AI Description

Document the verified live cockpit bridge and armed robot state

What Changed

  • Updates the Quick Connect instructions to show the deployed monorepo workspace and removal of the legacy checkout
  • Records that both robot services are enabled and active
  • Documents the live rosbridge endpoint and secure tailnet access URL
  • Confirms the DISARM/RE-ARM control round trip was tested successfully, with the robot left armed

Impact

✅ Clearer live robot connection steps
✅ Confirmed cockpit service availability
✅ Verified remote motion-control access

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

beast-cockpit.service is now enabled+active (was disabled/inactive), the
monorepo cutover is deployed (legacy ugv_ws gone), rosbridge is up on
127.0.0.1:9090, tailscale serve fronts it over the tailnet, and the
DISARM/RE-ARM round trip via /ugv/set_allow_motion was verified over the
bridge. allow_motion left true (armed).
Copilot AI review requested due to automatic review settings August 3, 2026 16:17
@codeant-ai

codeant-ai Bot commented Aug 3, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Reviewed your PR b8d9092 Aug 03, 2026 · 16:17 16:17

@codeant-ai

codeant-ai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@Coldaine
Coldaine merged commit 742d4eb into main Aug 3, 2026
1 check passed
@Coldaine
Coldaine deleted the docs/beast-cockpit-live branch August 3, 2026 16:17
@codeant-ai codeant-ai Bot added the size:XS This PR changes 0-9 lines, ignoring generated files label Aug 3, 2026
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

docs(beast): Update beast-01 quick-connect for live cockpit/rosbridge setup

📝 Documentation 🕐 Less than 10 minutes

Grey Divider

AI Description

• Update beast-01 “Quick connect” to reflect monorepo cutover and new ROS2 workspace path.
• Document beast-cockpit being enabled/active and rosbridge exposure via tailscale serve HTTPS.
• Record verified DISARM/RE-ARM round-trip over /ugv/set_allow_motion and current armed state.
Diagram

graph TD
  A["Operator client"] --> B["Tailnet HTTPS URL"] --> C["tailscale serve :443"] --> D["rosbridge 127.0.0.1:9090"] --> E["ROS2 /ugv/set_allow_motion"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Add a small “status/verify” script
  • ➕ Reduces staleness by making verification repeatable (services, ports, tailscale serve state).
  • ➕ Can be run during incidents to quickly confirm bridge and allow_motion behavior.
  • ➖ Adds maintenance surface area and needs a home (repo vs robot filesystem).
  • ➖ Still requires docs for interpretation and next steps.
2. Embed a copy-pastable command checklist with expected outputs
  • ➕ Makes the runbook actionable (systemctl status, ss/lsof, tailscale serve status).
  • ➕ Easier to re-verify and compare against expected state.
  • ➖ Outputs can drift across versions; can become noisy/long for a quick-connect section.

Recommendation: The PR’s approach (date-stamped, verified-state documentation) is the right immediate fix for operators. If this workflow will be used frequently, consider adding a short command checklist or a lightweight verification script to reduce future drift and make re-validation faster.

Files changed (1) +8 / -3

Documentation (1) +8 / -3
beast-ops.mdRefresh beast-01 quick-connect with live cockpit/rosbridge + tailscale details +8/-3

Refresh beast-01 quick-connect with live cockpit/rosbridge + tailscale details

• Updates the “Quick connect” block to reflect the deployed monorepo cutover and new ROS2 workspace location. Documents beast-cockpit.service as enabled/active and specifies the rosbridge localhost port and the tailscale serve HTTPS frontend, including the tailnet URL and a verified /ugv/set_allow_motion round-trip note.

docs/beast-ops.md

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates docs/beast-ops.md to reflect the newly verified (2026-08-03) live state of BEAST-01 connectivity and cockpit/rosbridge availability, ensuring operators follow current on-robot reality rather than stale deployment assumptions.

Changes:

  • Refreshes the Quick connect block to reflect the monorepo cutover deployment and current workspace path.
  • Documents beast-cockpit.service as enabled/active and describes the rosbridge endpoint via Tailscale Serve.
  • Records a verified DISARM/RE-ARM round trip via /ugv/set_allow_motion.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/beast-ops.md
`~/beast/RobotOverview/robot/beast/ros2_ws`). `beast-ros-base.service` and
`beast-cockpit.service` are both **enabled and active**. `beast-cockpit` serves the
rosbridge on `127.0.0.1:9090`, fronted over the tailnet by
`sudo tailscale serve --https=443 http://127.0.0.1:9090` → `https://beast-01.tyrannosaurus-magellanic.ts.net/`.
Comment thread docs/beast-ops.md
Comment on lines +16 to +18
The DISARM/RE-ARM round trip over that bridge via `/ugv/set_allow_motion` was verified live
(2026-08-03) and `allow_motion` was left `true` (armed). Network-path details below were
last fully verified 2026-07-31 unless marked newer.
@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (3) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Cockpit status contradicts runbook 🐞 Bug ≡ Correctness
Description
Quick connect now states beast-cockpit.service is enabled/active and tailscale serve is fronting
the bridge, but later in the same runbook it still says BEAST-01 does not currently have the cockpit
service/proxy configured and that cockpit telemetry/controls are not live. This makes the runbook
self-contradictory for operators trying to decide whether cockpit is actually deployed.
Code

docs/beast-ops.md[R12-13]

+`~/beast/RobotOverview/robot/beast/ros2_ws`). `beast-ros-base.service` and
+`beast-cockpit.service` are both **enabled and active**. `beast-cockpit` serves the
Relevance

●●● Strong

Team historically fixes runbook contradictions about deployment truth (PR #149); Quick connect now
conflicts with that section.

PR-#149
PR-#163

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The newly updated Quick connect section asserts cockpit is enabled/active and being served over the
tailnet, while the acceptance-note bullets later in the same file still say cockpit is not
installed/enabled and no WSS proxy exists—these statements cannot both be true as “current” status.

docs/beast-ops.md[10-18]
docs/beast-ops.md[230-237]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`docs/beast-ops.md` now contains conflicting claims about cockpit deployment: the Quick connect block says the cockpit service is enabled/active and the bridge is served over the tailnet, while a later (dated) acceptance note still claims cockpit is not installed/enabled and not live.

### Issue Context
If the later bullets are intended as historical notes, they should be rewritten in past tense and/or explicitly marked as superseded by the newer Quick connect verification.

### Fix Focus Areas
- docs/beast-ops.md[10-18]
- docs/beast-ops.md[230-237]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Rosbridge URL ambiguity 🐞 Bug ≡ Correctness
Description
Quick connect presents the bridge as an https://... URL and omits the --bg form used elsewhere,
but the cockpit/client connection is explicitly documented as wss://... in existing cockpit docs.
This ambiguity can cause operators to copy/paste the wrong protocol/command when configuring or
troubleshooting cockpit connectivity.
Code

docs/beast-ops.md[R14-15]

+rosbridge on `127.0.0.1:9090`, fronted over the tailnet by
+`sudo tailscale serve --https=443 http://127.0.0.1:9090` → `https://beast-01.tyrannosaurus-magellanic.ts.net/`.
Relevance

●●● Strong

They accept correcting operator-facing command/protocol ambiguity in docs (e.g., PR #116); cockpit
docs emphasize WSS proxy truth (PR #149).

PR-#149
PR-#116
PR-#163

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The PR’s Quick connect text uses an https URL and a different tailscale serve command shape, while
the cockpit bridge documentation in-repo explicitly instructs clients to connect via wss://... and
uses sudo tailscale serve --bg --https=443 ... as the canonical setup command.

docs/beast-ops.md[10-18]
robot/beast/ros2_ws/docs/cockpit.md[287-298]
robot/beast/ros2_ws/src/ugv_main/ugv_cockpit/README.md[62-80]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`docs/beast-ops.md` Quick connect shows the cockpit bridge being fronted as `https://...`, but other authoritative cockpit docs describe the client endpoint as `wss://...` and standardize the `tailscale serve` invocation with `--bg`. This can mislead operators into using the wrong scheme in clients or thinking the endpoint is a normal HTTPS page.

### Issue Context
Tailscale Serve terminates HTTPS and can proxy WebSockets, so the public hostname is the same, but clients should be pointed at a `wss://` URL (as the cockpit docs/README already state).

### Fix Focus Areas
- docs/beast-ops.md[10-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Armed state lacks safe closeout 🐞 Bug ☼ Reliability
Description
Quick connect records that after testing /ugv/set_allow_motion, allow_motion was left true
(armed) without an explicit “return to safe state” step. This is risky framing in an ops runbook
given the same document warns about prior/unfinished stop-on-silence safety verification while
allow_motion is true.
Code

docs/beast-ops.md[R16-17]

+The DISARM/RE-ARM round trip over that bridge via `/ugv/set_allow_motion` was verified live
+(2026-08-03) and `allow_motion` was left `true` (armed). Network-path details below were
Relevance

●● Moderate

Recent policy shifts toward motion-enabled default (PR #155) and PR #163 records leaving armed;
unclear if they’ll add disarm closeout.

PR-#155
PR-#163

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The PR adds a statement that allow_motion was left true (armed). Elsewhere in the same runbook,
motion safety is explicitly called out as hazardous/unreverified on command silence and specifically
discussed in the context of allow_motion being true, so the runbook should not end a verification
note in an armed state without a safe closeout instruction.

docs/beast-ops.md[16-18]
docs/beast-ops.md[216-226]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The Quick connect verification note ends in an armed state (`allow_motion=true`) without guidance to disarm when done. In an operational runbook, this should either (a) explicitly state it was re-disarmed after the verification, or (b) include a clear instruction to disarm unless actively supervising motion.

### Issue Context
The same doc contains strong warnings about motion continuing on command silence and that the watchdog behavior was not yet re-tested, which increases the importance of leaving the robot in a known-safe state.

### Fix Focus Areas
- docs/beast-ops.md[10-18]
- docs/beast-ops.md[216-226]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

Comment thread docs/beast-ops.md
Comment on lines +14 to +15
rosbridge on `127.0.0.1:9090`, fronted over the tailnet by
`sudo tailscale serve --https=443 http://127.0.0.1:9090` → `https://beast-01.tyrannosaurus-magellanic.ts.net/`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

1. Rosbridge url ambiguity 🐞 Bug ≡ Correctness

Quick connect presents the bridge as an https://... URL and omits the --bg form used elsewhere,
but the cockpit/client connection is explicitly documented as wss://... in existing cockpit docs.
This ambiguity can cause operators to copy/paste the wrong protocol/command when configuring or
troubleshooting cockpit connectivity.
Agent Prompt
### Issue description
`docs/beast-ops.md` Quick connect shows the cockpit bridge being fronted as `https://...`, but other authoritative cockpit docs describe the client endpoint as `wss://...` and standardize the `tailscale serve` invocation with `--bg`. This can mislead operators into using the wrong scheme in clients or thinking the endpoint is a normal HTTPS page.

### Issue Context
Tailscale Serve terminates HTTPS and can proxy WebSockets, so the public hostname is the same, but clients should be pointed at a `wss://` URL (as the cockpit docs/README already state).

### Fix Focus Areas
- docs/beast-ops.md[10-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread docs/beast-ops.md
Comment on lines +12 to +13
`~/beast/RobotOverview/robot/beast/ros2_ws`). `beast-ros-base.service` and
`beast-cockpit.service` are both **enabled and active**. `beast-cockpit` serves the

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

2. Cockpit status contradicts runbook 🐞 Bug ≡ Correctness

Quick connect now states beast-cockpit.service is enabled/active and tailscale serve is fronting
the bridge, but later in the same runbook it still says BEAST-01 does not currently have the cockpit
service/proxy configured and that cockpit telemetry/controls are not live. This makes the runbook
self-contradictory for operators trying to decide whether cockpit is actually deployed.
Agent Prompt
### Issue description
`docs/beast-ops.md` now contains conflicting claims about cockpit deployment: the Quick connect block says the cockpit service is enabled/active and the bridge is served over the tailnet, while a later (dated) acceptance note still claims cockpit is not installed/enabled and not live.

### Issue Context
If the later bullets are intended as historical notes, they should be rewritten in past tense and/or explicitly marked as superseded by the newer Quick connect verification.

### Fix Focus Areas
- docs/beast-ops.md[10-18]
- docs/beast-ops.md[230-237]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread docs/beast-ops.md
Comment on lines +16 to +17
The DISARM/RE-ARM round trip over that bridge via `/ugv/set_allow_motion` was verified live
(2026-08-03) and `allow_motion` was left `true` (armed). Network-path details below were

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

3. Armed state lacks safe closeout 🐞 Bug ☼ Reliability

Quick connect records that after testing /ugv/set_allow_motion, allow_motion was left true
(armed) without an explicit “return to safe state” step. This is risky framing in an ops runbook
given the same document warns about prior/unfinished stop-on-silence safety verification while
allow_motion is true.
Agent Prompt
### Issue description
The Quick connect verification note ends in an armed state (`allow_motion=true`) without guidance to disarm when done. In an operational runbook, this should either (a) explicitly state it was re-disarmed after the verification, or (b) include a clear instruction to disarm unless actively supervising motion.

### Issue Context
The same doc contains strong warnings about motion continuing on command silence and that the watchdog behavior was not yet re-tested, which increases the importance of leaving the robot in a known-safe state.

### Fix Focus Areas
- docs/beast-ops.md[10-18]
- docs/beast-ops.md[216-226]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b8d9092a9f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/beast-ops.md
`~/beast/ugv_ws` checkout is at `2d1eab7`; `beast-ros-base.service` is active and
`beast-cockpit.service` is inactive. The monorepo cutover described below has not yet been
deployed. Network-path details below were last fully verified 2026-07-31 unless marked newer.
`~/beast/ugv_ws` checkout is gone and the monorepo cutover is deployed (workspace at

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Point the live-check command at the deployed workspace

After this cutover, anyone following the mandatory Ground-truth check at lines 121–125 will still run source ~/beast/ugv_ws/install/setup.bash. Because this change says that checkout has been removed and the command chains operations with &&, execution stops before the topic, voltage, and publisher checks, leaving the prescribed live-verification path unusable; update it to source the install under ~/beast/RobotOverview/robot/beast/ros2_ws.

AGENTS.md reference: AGENTS.md:L99-L106

Useful? React with 👍 / 👎.

Comment thread docs/beast-ops.md
Comment on lines +11 to +12
`~/beast/ugv_ws` checkout is gone and the monorepo cutover is deployed (workspace at
`~/beast/RobotOverview/robot/beast/ros2_ws`). `beast-ros-base.service` and

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Record the deployed monorepo revision

This cutover removes the previously recorded live commit 2d1eab7 but replaces it only with a directory. The deployment recipe at lines 173–182 explicitly requires git -C ~/beast/RobotOverview rev-parse --short HEAD to be recorded in Quick connect, and because deployments are manual (lines 185–186), the path cannot establish which revision the services are actually running; record the live monorepo HEAD so later operators can correlate behavior with source.

AGENTS.md reference: AGENTS.md:L94-L106

Useful? React with 👍 / 👎.

Comment thread docs/beast-ops.md
Comment on lines +13 to +15
`beast-cockpit.service` are both **enabled and active**. `beast-cockpit` serves the
rosbridge on `127.0.0.1:9090`, fronted over the tailnet by
`sudo tailscale serve --https=443 http://127.0.0.1:9090` → `https://beast-01.tyrannosaurus-magellanic.ts.net/`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update the deployment owner doc with the live rollout

These lines now declare beast-cockpit.service active and Tailscale Serve configured, while docs/deploy.md lines 61–65 still tell deployment operators that the service has not been installed or enabled and that Serve has not been configured. That leaves the designated deployment-state document reporting the exact opposite of this live verification, which can cause operators to repeat rollout steps or diagnose the transport as absent; update that section while retaining the separate fact that the Hangar's BEAST_COCKPIT_WS_URL remains unconfigured.

AGENTS.md reference: AGENTS.md:L108-L116

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS This PR changes 0-9 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants