Open Source · MIT License
Hardware access
for AI agents.
OAHL is an open-source protocol that gives AI agents a standard way to discover, reserve, control, and release physical hardware — cameras, phones, radios, sensors, lab equipment — through a single, consistent interface.
What is OAHL?
AI agents today can call APIs, browse the web, and write code — but they cannot touch the physical world without custom, fragile integration work for every device. OAHL fixes this by defining a standard protocol for hardware interaction.
A hardware owner installs a small node server next to their devices. Each device exposes capabilities —
standardized actions like camera.capture, radio.scan, or input.tap.
Agents discover these capabilities through a cloud registry and execute them through a managed session with
built-in isolation and policy enforcement.
Node
A lightweight server running on a machine connected to hardware. It loads adapters and exposes capabilities over HTTP.
Adapter
A plugin that translates device-specific commands into OAHL's standard capability interface. One adapter per device class.
Capability
A named, schema-validated action: camera.capture, sensor.read, screen.tap. Agents discover and invoke them uniformly.
Session
A time-bound, exclusive reservation of a device. While one agent holds a session, no other agent can interfere.
Policy
Declarative rules controlling what agents can do: allowed capabilities, duration limits, and deny lists — all configured by the hardware owner.
Cloud Registry
The optional central hub where nodes register so remote agents can discover capabilities globally. Fully optional — OAHL works locally too.
What we're trying to achieve
We believe AI agents should be able to interact with the physical world as easily as they call a REST API today. But hardware is messy — different protocols, drivers, connection methods, and safety concerns across every device family.
Our goals:
- Define a standard. A single protocol spec that any hardware can implement, so agent developers write integration code once — not per-device.
- Make it safe. Session isolation, policy enforcement, capability allowlists. The hardware owner always stays in control.
- Keep it open. MIT licensed, community-driven, no vendor lock-in. Anyone can build adapters, run nodes, or extend the protocol.
- Build an ecosystem. An adapter marketplace where the community publishes and discovers hardware integrations.
- Align with standards. Compatibility with W3C Web of Things, JSON Schema for capability contracts, OpenAPI for the cloud interface.
How it works
Agent queries the cloud registry for available capabilities and devices.
Agent requests a session on a specific device. The system enforces exclusivity and policy.
Agent sends capability commands through the relay. Results are returned as structured JSON.
Agent stops the session. The hardware is freed for the next consumer.
// Typical agent integration (TypeScript SDK)
import { CloudClient } from '@oahl/sdk';
const cloud = new CloudClient('https://oahl.onrender.com', AGENT_KEY);
const { devices } = await cloud.getCapabilities({ type: 'android' });
const { session_id } = await cloud.requestSession({ device_id: devices[0].id });
const result = await cloud.execute(session_id, { capability: 'screen.capture' });
await cloud.stopSession(session_id);
How you can help
OAHL is a community project. We're a small team building something ambitious, and we need people who care about giving AI agents real-world capabilities.
🔌 Build adapters
Write an @oahl/adapter-* package for a device you know well. Arduino, Raspberry Pi GPIO,
industrial PLCs, scientific instruments — any hardware that could benefit from agent access.
→ Run oahl create-adapter my-device to scaffold
🧩 Improve the core
Bug fixes, performance improvements, and test coverage for packages/core, packages/server,
and packages/cloud. TypeScript, clean commits, and tests required.
→ Look for issues labeled good first issue
📖 Write documentation
Improve guides, fix inaccuracies, add examples. The docs/ folder is always in need of better
onboarding content and real-world usage examples.
→ Check docs/ for gaps and outdated info
🌐 Build SDK clients
We have JavaScript and Python SDKs. We'd love Go, Rust, Java, or C# clients so agents on any platform can access OAHL hardware.
→ See docs/sdk-strategy.md for design guidance
🧪 Conformance testing
Expand the protocol conformance test suite. Help ensure adapters behave correctly and execution results match the spec.
→ See packages/cli/src/conformance.ts
📐 Protocol design
Propose RFCs for protocol-level changes: new lifecycle steps, security controls, transport profiles. We follow a lightweight RFC process in GitHub Discussions.
→ Read docs/rfcs/000-rfc-process.md
Getting started as a contributor
# Clone and set up
git clone https://github.com/fredabila/oahl.git
cd oahl
npm install
npm run build
# Run the test suite
npm test
# Start a local development node
cp oahl-config.example.json oahl-config.json
npm start
Prerequisites: Node.js ≥ 18, npm ≥ 9, TypeScript ≥ 5, Git.
For adapter work, you'll also need the driver toolchain for your target hardware
(e.g., ADB for Android, serialport bindings for serial devices).
Please read CONTRIBUTING.md before opening a PR. It covers branching conventions, commit style, the PR checklist, and the adapter authoring rules.