Codync
免費、開源的 1:1 替代方案,取代 Grok Bot 與 Muse。從 iPhone、Mac 或 Linux 桌面將 Claude Code、Codex、Cursor 與 40+ 程式碼代理人作為持續機器人傳訊。群組聊天、主題串…
AI 翻譯
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Independent project. OpenMHS is not affiliated with, endorsed by, or compatible with Anthropic or its Model Hardware Standard, whose specification is not public. Pre-alpha: no adapter has been run against physical hardware by the project, and OpenMHS is not a safety system. Details below.
Letting a language model drive real equipment goes wrong in three predictable ways.
5 can mean volts, millivolts or a mistake. OpenMHS describes each device
in a descriptor with units, limits, preconditions and side
effects, and refuses what does not fit it. Nothing is guessed.UNKNOWN_OUTCOME, does not retry blindly, and
reconciles by reading the device. Every command is journaled
and the audit log is hash-chained.Real-time control stays in the device's own controller, and hardware safety systems keep final authority.
About a minute, with simulated devices only. You need a built openmhs binary; there is
no published release yet, so build from source (Rust 1.89+):
git clone https://github.com/KNambiarDJsc/Open-MHS
cd Open-MHS
cargo install --locked --path crates/openmhs-cli # installs openmhs and openmhsd
openmhs --version
1. See it work (about 10 seconds). A guided run of a real gateway over its API:
openmhs demo
Already use an MCP host (Claude Code, Claude Desktop, an IDE agent)? Skip to the agent side in one line, with the virtual lab built in and no token to handle (docs/mcp.md):
claude mcp add openmhs-sim -- openmhs mcp --sim
2. Run the gateway yourself. In terminal 1:
openmhs serve --sim
In terminal 2, as the operator, allow an agent to use the simulated power supply and create its credential. The token is printed once.
openmhs devices list
openmhs grants add --id agent-psu --principal agent:demo --device sim.psu-01 --capability '*' --ops read,write --effect allow
openmhs tokens create agent:demo --any-scope
Then act as the agent. Unix shells:
export OPENMHS_TOKEN=omhs_... # the token printed above
openmhs exec sim.psu-01 power.output.voltage.setpoint --value 5V # refused: jumps too fast
openmhs exec sim.psu-01 power.output.voltage.setpoint --value 2V # applied and read back
PowerShell:
$env:OPENMHS_TOKEN = "omhs_..." # the token printed above
openmhs exec sim.psu-01 power.output.voltage.setpoint --value 5V
openmhs exec sim.psu-01 power.output.voltage.setpoint --value 2V
The 5 V request ends DENIED command.slew_exceeded: change of 5 V exceeds the limit of 2 V per 1000 ms, and nothing is sent to the device. The 2 V request ends
VERIFIED -> succeeded (confirmed by readback). Last, check that the audit log is
intact (as the operator, without the token):
openmhs audit verify
The simulated devices are sim.thermo-01 (temperature sensor), sim.psu-01 (power
supply) and sim.axis-01 (linear stage). State resets when the gateway restarts.
Your own device: openmhs profile new mqtt --id my.device-01 writes a starter profile
for a Modbus TCP, MQTT, SCPI or HTTP device, and Connect your own device
takes it from there to an agent, with each step tried against a simulator first.
UNKNOWN_OUTCOME, readback verification, reconciliation and crash recovery over a SQLite journal.openmhs audit verify.flowchart LR
A["AI apps and agents"] --> F["MCP server · CLI · Python SDK"]
F --> R["OpenMHS runtime<br/>(gateway, journal, audit)"]
R --> P["Authorization and validation<br/>grants · units · limits · approvals"]
P --> H["Adapter host"]
H --> L["Protocols<br/>Modbus · MQTT · SCPI · HTTP · OPC UA · ROS 2"]
L --> D["Devices and simulators"]
D -. "telemetry and readback" .-> H
H -. "verified outcomes, receipts" .-> R
R -. "results and reasons" .-> F
An agent never touches a device. It sends a command to the runtime, which validates it against the device's descriptor, applies policy, runs it through an adapter, reads the result back, and returns a receipt that says what happened and why. Design: ADR-0001.
Generated from the conformance reports in conformance/reports/
by tools/gen_matrix.py; the full table, with checks, platforms and
every report on file, is docs/compatibility.md.
Simulation is not physical validation. Every row below was tested against a simulator. "Integration-tested" means the adapter spoke its real protocol to a simulated device; it does not mean any real device works. A level is not a safety certification.
| Adapter | Protocol | Evidence | Level reached | Result | Report |
|---|---|---|---|---|---|
| openmhs.http | HTTP | Integration-tested (simulated peer) | L3 (declares L2) | Pass | report |
| openmhs.modbus | Modbus TCP | Integration-tested (simulated peer) | L3 (declares L2) | Pass | report |
| openmhs.mqtt | MQTT | Integration-tested (simulated peer) | L3 (declares L2) | Pass | report |
| openmhs.py.psu-sim | other | Simulated | L3 (declares L3) | Pass | report |
| openmhs.scpi | SCPI | Integration-tested (simulated peer) | L3 (declares L2) | Pass | report |
Evidence terms: simulated (in-process virtual lab), integration-tested (real protocol, simulated peer), physically validated (none yet), not verified (no report on file). Entries are listed in the adapter registry.
All three run offline on simulated devices.
A simulated sensor. Let an agent read the thermometer; without a grant it is refused.
openmhs serve --sim # terminal 1
openmhs grants add --id agent-thermo --principal agent:demo --device sim.thermo-01 --capability '*' --ops read --effect allow
openmhs tokens create agent:demo --any-scope # prints a token; export it as OPENMHS_TOKEN
openmhs read sim.thermo-01 temperature.ambient # reading, quality, source and age
openmhs read sim.psu-01 power.output.voltage.measured # refused: no grant for the supply
A simulated programmable device. The power supply of the quickstart, plus the workcell plan: lease the supply and the stage, then run five steps in order. If the stage refuses to home, the supply's steps are undone newest first.
# after granting an agent both devices, as the workcell README shows:
openmhs plans preflight examples/workcell/plan.json # dry run against twins (no physics)
openmhs plans submit examples/workcell/plan.json
An MCP agent. A scripted agent with no model and no API key connects over MCP, hits a slew limit, reads why, ramps 0 → 2 → 4 → 5 V, declines a 15 V request, and stops to ask a human when it has no permission to move the stage.
cargo build -p openmhs-cli
python examples/agent-loop/mock_agent.py
To use Claude Code or another MCP host, see docs/mcp.md; to let Claude decide, see examples/agent-loop (needs your own API key).
OpenMHS does not replace these. It sits at a different point.
| Approach | What it is | How OpenMHS relates |
|---|---|---|
| Anthropic's Model Hardware Standard (MHS) | Announced 2026-08-27 as a limited research preview; the specification is not public | OpenMHS is independent and makes no compatibility claim. It was designed from public information (landscape, ADR-0007) |
| ROS 2 | Robotics middleware for real-time, distributed control | OpenMHS does not do real-time control. It has an observation-only ROS 2 adapter; services and actions are not supported |
| OPC UA | The industrial interoperability standard | OpenMHS has a read-only OPC UA adapter; writes and methods are not supported |
| Vendor SDKs, PyVISA, raw drivers in agent code | Direct access to an instrument | No policy, journal or readback between the model and the device. OpenMHS wraps access like these in an adapter and puts a gateway in front |
| An MCP server per instrument | One tool server per device | OpenMHS is one gateway with one policy, audit log and lifecycle for all devices, and its MCP server is a client of it |
OpenMHS reduces what can go wrong. It does not make hardware safe.
stop
action is an ordinary, authorized command that skips the device lock and leases; it
only interrupts a move if the adapter and device do.ok means a plan fits the contract and current
readings, not that it will succeed.Vulnerabilities: SECURITY.md. Threat model: docs/security/.
Want to connect a new device? Build an adapter. openmhs adapter new <name>
generates a working adapter crate with a fake device and conformance tests; the
adapter guide takes it from there, and the
registry lists it when it passes. Bug reports, docs fixes and
good first issues are just as welcome. Read
CONTRIBUTING.md first; larger changes start with an
RFC.
Other projects also use the name "OpenMHS"; this one keeps it knowingly. See docs/research/naming.md.
OpenMHS builds on the ideas and tools of others: the Model Context Protocol, JSON Schema, Modbus, MQTT, SCPI, OPC UA and ROS 2 communities, and the Rust crates listed in Cargo.lock. Naming and positioning research is in docs/research.
Apache-2.0. See LICENSE.
| openmhs.sim.axis | built-in | Simulated | L3 (declares L3) | Pass | report |
| openmhs.sim.psu | built-in | Simulated | L3 (declares L3) | Pass | report |
| openmhs.sim.thermo | built-in | Simulated | L1 (declares L1) | Pass | report |
| openmhs.py.octoprint | HTTP | Integration-tested (simulated peer) | L1 (declares L1) | Pass | report |
| openmhs.py.opcua | OPC UA | Not verified | declares L1; none reached on file | Not verified | none |
| openmhs.py.ros2 | ROS 2 | Not verified | declares L1; none reached on file | Not verified | none |