Skip to content

AI Vision over embeddedci.com: embeddedci:<name>, list_boards, register_cloud, vision_cloud_boards - #63

Merged
wardviaene merged 2 commits into
mainfrom
aivision-cloud
Nov 7, 2026
Merged

wardviaene merged 2 commits into
mainfrom
aivision-cloud

Conversation

@wardviaene

Copy link
Copy Markdown
Member

Reach an AI Vision board paired with embeddedci.com from anywhere, the way a cloud BenchPod is reached.

SDK (embeddedci.aivision)

  • AIVision("embeddedci:<name>"): every call goes through the server's proxy (/api/cloud/aivision/<name>/api/v1/...), signed in like a cloud pod: an API key with the "Control AI Vision" scope (api_key= / BENCHPOD_API_KEY), else the benchpod login session, else GitHub Actions OIDC. A refused session token is minted again once.
  • lease= over the cloud takes the server's device lease (the one the web app and other runs see); lease_wait= waits for a busy board.
  • The server's error answers map to the SDK's exceptions: lease held → BusyError (with detail["who"]), offline → TransportError, refused sign-in → AuthError.
  • list_boards(), and on the LAN register_cloud(name), cloud(), unpair_cloud().
  • Docs: docs/aivision.md "Over embeddedci.com", README, changelog (still 2.13.8, unreleased).

MCP

  • New vision_cloud_boards; vision_connect takes embeddedci:<name>. Tool surface snapshot updated (one new tool, two reworded descriptions). Changelog under Unreleased (next release 2.13.9).

Tested

  • Unit: 9 new cloud tests against a fake server, 2 new MCP tool tests; all suites pass locally (SDK 736, MCP 172).
  • Live, locally: the real server (podsim stack) with aivision-sim connected as a cloud board through the reference board client. Lease, a second client refused with BusyError, an unleased press refused (409), release, list_boards, registration and pairing on the agent.
  • Not tested on a real board: the agent's own cloud connection (group 5) is Jorn's.

🤖 Generated with Claude Code

wardviaene and others added 2 commits November 6, 2026 19:13
AIVision("embeddedci:<name>") sends the board's API calls through the
server's AI Vision proxy, signed in like a cloud pod (API key, the benchpod
login session, GitHub Actions OIDC), and lease= takes the server's device
lease. The server's own error answers (lease held, offline, refused token)
map to BusyError, TransportError and AuthError. list_boards() lists the
organization's boards; register_cloud(), cloud() and unpair_cloud() pair a
board from its LAN.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@wardviaene
wardviaene merged commit 781001d into main Nov 7, 2026
20 checks passed
@wardviaene
wardviaene deleted the aivision-cloud branch November 7, 2026 01:18
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