DEV Community

Cover image for My Virtual Office v0.7.0: one SDK for OpenClaw, Codex CLI, Claude Code, and more
Elix
Elix

Posted on

My Virtual Office v0.7.0: one SDK for OpenClaw, Codex CLI, Claude Code, and more

The real story in My Virtual Office v0.7.0 is not another adapter. It is the contract.

My Virtual Office now has a Universal Provider SDK that lets one self-hosted workspace connect to OpenClaw, Hermes, Codex CLI, Claude Code, OpenCode, and Antigravity through the same manifest-driven integration layer.

Release notes:
https://github.com/eliautobot/my-virtual-office/releases/tag/v0.7.0

Why this matters

Most agent UIs turn into a pile of provider-specific edges. Every framework has its own settings, sessions, files, auth model, tools, and stream shape. That works until you try to make the UI feel coherent.

v0.7.0 moves that work into one provider contract.

That means New Agent, Agent Desk, settings, native files, sessions, AgentSkills, chat streaming, status, errors, and approvals all flow through a common SDK surface instead of being wired as one-offs.

What shipped

  • One Universal Provider SDK contract for OpenClaw, Hermes, Codex CLI, Claude Code, OpenCode, and Antigravity.
  • Manifest-driven settings for connections, models, permissions, discovery, active sessions, authentication status, native files, New Agent, Agent Desk, and AgentSkills.
  • Provider-neutral progressive streaming for text, thinking, tool calls/results, approvals, status, completion, interruption, and errors.
  • Native external-agent discovery, with temporarily missing agents retained as offline so they can be forgotten safely without deleting native files.
  • Documentation for third-party vo_provider_*.py adapters.

The chat window got a lot harder to break

The release adds one shared event/reducer pipeline across OpenClaw, Hermes, Codex CLI, Claude Code, and Provider SDK streams.

That reducer keeps commentary, thinking, tools, results, and final answers in order. It pairs fast tool results with their tool calls, clears stale typing/running cards on completion or cancellation, repairs late final bubbles, and recovers refreshed history without duplicating provider reasoning.

The full chat window and the yellow in-office chat bubble now stay synced to each agent's selected native session. Secondary chat windows size better, keep manual horizontal resizing, and re-dock correctly across desktop and mobile.

Native files are locked down

The SDK does not mean providers get a free pass into the filesystem.

Provider manifests explicitly allowlist which native files Virtual Office may list, read, create, edit, or delete. Credential files and undeclared workspace files stay hidden. Traversal and symlink escapes are rejected. AgentSkills need valid frontmatter. Overwrites and deletes create recoverable backups.

Authentication stays native

Virtual Office does not bundle or expose provider credentials.

OpenClaw, Hermes, Codex CLI, and OpenCode completed connected acceptance testing. Claude Code and Antigravity lifecycle, settings, native files, and skills integration passed, but model-backed chat requires users to authenticate with those native CLIs.

Validation

The release passed all six provider contracts and manifest/UI contracts against the live product, plus Python provider/product tests, chat-session checks, chat-stream architecture checks, gathering checks, review-parser checks, workflow checks, and project CRUD checks.

A real OpenCode model turn completed through the progressive SDK event stream. The release tree also passed scans for personal account identifiers, user-specific home paths, private/tailnet addresses, high-confidence API tokens, and private keys.

My Virtual Office is self-hosted and open source.

Release notes and download:
https://github.com/eliautobot/my-virtual-office/releases/tag/v0.7.0

Top comments (1)

Collapse
 
alexshev profile image
Alex Shev

The hard part of a multi-agent SDK is usually not the wrapper; it is preserving each surface's failure semantics. Codex, Claude Code, and browser-driven agents can all look like "run a task," but retries, permissions, state, and evidence are different enough that the SDK needs to expose those differences.