Codync
免费开源的 1:1 Grok Bot 与 Muse 替代方案。可在 iPhone、Mac 或 Linux 桌面上将 Claude 代码、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 |