The first hardware product built for OpenClaw.
A tiny wearable that gives your OpenClaw agent a voice, ears, and a body.
Nexting is a complete personal AI agent system — not just a gadget, not just an app. It's an entire ecosystem purpose-built for OpenClaw:
🔧 Hardware — A tiny wearable with a microphone, powered by XIAO nRF52840 Sense. Pin it on, forget it's there.
📱 iPhone App — Real-time speech recognition, intelligent routing, and device skill integration. Your phone becomes the bridge between you and your agent.
☁️ Cloud — A relay that connects your iPhone to the OpenClaw running on your own machine. Your agent, your data, your infrastructure — we only pass messages through.
You speak → Nexting PIN (BLE) → iPhone App → OpenClaw Plugin → Gateway → AI
↓
You hear ← iPhone App ← Plugin ← ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ AI Response
- OpenClaw v2026.5.0 or later
- Node.js 22+
- Nexting iOS app
openclaw plugins install pinclaw --dangerously-force-unsafe-installWhy --dangerously-force-unsafe-install?
OpenClaw's security scanner blocks plugins that use child_process or read environment variables combined with network requests. Nexting uses both for legitimate reasons:
child_process— Local agent orchestration (ACP protocol)process.env+fetch— Reading API keys (IMAGE_API_KEY,TTS_API_KEY) to call AI generation APIs
This plugin is fully open source. Review the code here before installing if you have concerns.
openclaw gatewayIn the OpenClaw chat (web UI or terminal):
/pinclaw login
This opens a browser window to sign in at nexting.ai. Once authenticated, the relay connection is auto-configured — your iPhone can reach your local OpenClaw from anywhere.
Open the Pinclaw iOS app, sign in with the same account, and you're connected.
/pinclaw status
You should see relay: connected and your device listed.
| Command | Description |
|---|---|
openclaw pinclaw login |
Link your OpenClaw to nexting.ai (also available as /pinclaw login in chat) |
openclaw pinclaw status |
Show relay connection status |
openclaw pinclaw logout |
Remove relay connection |
| Layer | What | Role |
|---|---|---|
| Nexting PIN | XIAO nRF52840 Sense | Push-to-talk voice capture (records only while the button is held), BLE streaming to iPhone |
| iPhone App | Swift, native | Speech recognition (Apple + Deepgram), device skills, AI routing |
| This Plugin | pinclaw |
Channel adapter — bridges iPhone ↔ OpenClaw Gateway |
| OpenClaw | Gateway + Agent | Your personal AI runtime, database, scheduling |
Nexting AI Mode — A managed agent in the cloud (Nexting Pro subscription). No OpenClaw and no plugin needed — buy the PIN, download the app, subscribe.
My OpenClaw Mode — You run OpenClaw on your own machine; this plugin connects it via relay through our cloud, so your iPhone can reach your home server from anywhere. We never run OpenClaw for you — your agent stays on your hardware.
Your iPhone isn't just a dumb pipe. It registers native capabilities as skills that your AI agent can call:
- Calendar — Read and create events
- Reminders — Manage tasks and to-do lists
- Contacts — Look up people
- Health, HomeKit, Location, Timer — and more native iOS capabilities
The AI sees these as tools and calls them when relevant. Say "schedule a meeting tomorrow at 3pm" and the agent calls your iPhone's calendar directly.
The plugin maintains awareness of your device state — battery level, current calendar events, active reminders. Your agent knows what's happening on your phone even when you don't explicitly tell it.
┌─────────────────────────────────────────────────────┐
│ iPhone App │
│ ┌──────────┐ ┌──────────┐ ┌───────────────────┐ │
│ │ BLE Recv │ │ Apple STT│ │ Device Skills │ │
│ │ (PIN) │→ │ Deepgram │→ │ Calendar/Reminders │ │
│ └──────────┘ └──────────┘ └───────────────────┘ │
│ │ │
│ Unified WebSocket │
└──────────────────────┼───────────────────────────────┘
│
┌──────────▼──────────┐
│ Nexting Cloud │
│ (Relay Server) │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ This Plugin │
│ pinclaw │
│ │
│ • WS Handler │
│ • Device Manager │
│ • AI Pipeline │
│ • Cron Proxy │
│ • Server Tools │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ OpenClaw Gateway │
│ Your AI Agent │
└─────────────────────┘
├── index.ts # Plugin entry — registers channel, hooks, CLI commands
├── build.mjs # esbuild script (TS → JS transpile for npm)
├── openclaw.plugin.json # Plugin manifest (channelConfigs, configSchema)
├── package.json # npm package config
├── src/
│ ├── channel.ts # Channel adapter (config, outbound, lifecycle)
│ ├── types.ts # WebSocket protocol definitions
│ ├── relay-client.ts # Cloud relay connection
│ ├── cli-auth.ts # Login/logout/status CLI handlers
│ ├── runtime.ts # Shared runtime state
│ ├── ws-server.ts # WebSocket server exports
│ ├── interactive-ai.ts # Play button — lightweight standalone AI calls
│ ├── core/ # Standalone server (HTTP + WS + device management)
│ ├── acp/ # Agent Control Protocol (local agent orchestration)
│ └── tools/ # Server-side tools (image gen, audio gen, etc.)
└── dist/ # Build output (generated, not committed)
The plugin configures itself through ~/.openclaw/openclaw.json. Most settings are auto-configured via /pinclaw login:
{
"channels": {
"pinclaw": {
"enabled": true,
"wsPort": 18790,
"relay": {
"enabled": true,
"url": "wss://api.nexting.ai"
}
}
}
}Or via environment variables:
| Variable | Purpose |
|---|---|
PINCLAW_RELAY_TOKEN |
Relay authentication token |
PINCLAW_RELAY_URL |
Relay server URL |
INTERACTIVE_AI_KEY |
API key for Play button AI |
INTERACTIVE_AI_BASE_URL |
Base URL for Play button AI |
INTERACTIVE_AI_MODEL |
Model for Play button AI |
The plugin exposes HTTP endpoints on port 18790:
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check (device count, gateway status) |
/ai-health |
GET | AI health check (model, latency) |
/api/cron/list |
GET | List scheduled tasks |
/api/cron/create |
POST | Create a scheduled task |
/api/skills/list |
GET | List available skills |
/api/skills/get/:name |
GET | Get skill details |
/api/media/upload |
POST | Upload media files |
Create a file in src/tools/ and it will be auto-discovered:
// src/tools/weather.ts
import type { ServerTool } from "./types.js";
export default {
name: "get_weather",
description: "Get current weather for a location",
parameters: [
{ name: "city", type: "string", description: "City name", required: true },
],
async execute({ city }) {
// Your implementation
return { temperature: 22, condition: "sunny", city };
},
} satisfies ServerTool;The AI agent will automatically see and use your tools.
| 🌐 Website | nexting.ai |
| 📱 iOS App | App Store |
| 📖 Documentation | nexting.ai/doc |
| 🛒 Buy Nexting | nexting.ai |
| 🔧 OpenClaw | openclaw.ai |
We welcome contributions! Nexting's core is open source (MIT).
- Fork this repository
- Create your feature branch (
git checkout -b feature/amazing) - Commit your changes
- Push and open a Pull Request
MIT License. See LICENSE for details.
Built for OpenClaw
The first hardware-native AI wearable for the open-source agent platform.
