Android Camera Bridge
Android-only OpenClaw camera bridge plugin for capture, staging, and optional image analysis.
Audits
PassInstall
openclaw plugins install clawhub:openclaw-android-camera-bridgeAndroid Camera Bridge for OpenClaw
Turn “take a picture” into a one-shot, deterministic action for OpenClaw agents.
Android-only OpenClaw plugin that replaces fragile phone-camera orchestration with a single stable capability.
Install
1. Install the plugin locally
npm install
npm run build
openclaw plugins install -l .
openclaw gateway restart
2. Allow the tool
You can do this either in config or from the local web dashboard.
Config example:
agents: {
list: [
{
id: "main",
tools: {
alsoAllow: ["android_camera_bridge"]
},
skills: ["android-camera-bridge"]
}
]
}
Local web dashboard path:
- Open the local OpenClaw dashboard.
- Go to
AI & Agents. - Open the
Toolstab. - Under
Tool Allowlist Additions, clickAdd. - Add
android_camera_bridgein theaccess > toolsentry. - Click
Save, thenUpdate.
This updates the backend config from the dashboard UI.
Example
User: "take a picture"
Agent: → captures from Android device → stages image in workspace → returns result
No retries. No drift. No JSON wrangling.
Why this exists
Small local models were getting crushed by raw tool choreography:
- wrong node/action formatting
- retry drift
- blocked media payloads from the gateway path
- no clean handoff from temp capture → workspace image
This plugin fixes that by removing the complexity entirely.
Instead of forcing the model to orchestrate multiple steps, it exposes a single stable capability.
What it does
android_camera_bridge:
-
calls the working OpenClaw Android camera helper
-
finds the fresh image in the OpenClaw temp folder
-
copies it into the agent workspace
images/folder -
maintains:
- archived captures
- rolling
latest-<facing>file
-
optionally runs image analysis
Architecture
camera → temp → workspace → (optional) analysis
All low-level orchestration is handled inside the plugin. The agent only sees a single tool.
Tool
- Plugin id:
android-camera-bridge - Tool name:
android_camera_bridge
Parameters
node— optional Android node name or idfacing—frontorbackanalyze— run image analysisanalysisMode—ollama,openclaw, ornoneprompt— override prompt for local analysismaxWidth— optional helper max widthquality— optional JPEG qualitydelayMs— optional capture delay
Recommended mode
For a fully local setup:
analysisMode: "ollama"
This keeps the entire pipeline local and avoids provider-backed image analysis.
Behind the scenes, the plugin reads the staged image from disk, base64-encodes it, and sends it to your local Ollama API with an HTTP POST to /api/generate.
The request shape looks like this:
{
"model": "qwen3.5:4b",
"prompt": "Describe what is visible in this image in plain language. Be direct and concrete.",
"images": ["<base64-image>"],
"stream": false
}
So ollamaModel: "qwen3.5:4b" in the example config is simply the model name the plugin passes to Ollama. It is not hardcoded behavior. You can replace it with any local Ollama model on your machine that supports vision/image input.
Requirements
This plugin assumes OpenClaw camera prerequisites are already satisfied:
- OpenClaw installed + Gateway running
- OpenClaw CLI available on PATH (or
openclawBinset) - Android node paired and reachable
- Android app has camera permission
- Android app is in foreground during capture
- Workspace is configured and writable
If those are true, this should work without machine-specific hacks.
Example config
plugins: {
allow: ["android-camera-bridge"],
entries: {
"android-camera-bridge": {
enabled: true,
config: {
defaultNode: "paired-android-node",
tempSubdir: "openclaw",
workspaceImagesDir: "images",
defaultAnalyze: true,
latestFileName: "latest",
// Optional if OpenClaw is already on PATH for the Gateway process
openclawBin: "C:\\path\\to\\openclaw.cmd",
ollamaBaseUrl: "http://127.0.0.1:11434",
// Any local Ollama model that supports image input
ollamaModel: "qwen3.5:4b"
}
}
}
}
agents: {
list: [
{
id: "main",
tools: {
alsoAllow: ["android_camera_bridge"]
},
skills: ["android-camera-bridge"]
}
]
}
Usage
Natural language:
Take a picture with the android bridge.
Direct:
Use android_camera_bridge to take a photo and describe it.
Capture only:
Use android_camera_bridge with analyze false to take a photo.
Limitations
- Android-only
- Requires foreground Android app for capture
- Image analysis depends on local model / provider setup
Notes
- Designed to narrow the model-facing tool surface
- Great fit for smaller local / edge models
- Can use OpenClaw media understanding (
analysisMode: "openclaw") or fully local Ollama - Wraps the documented
openclaw nodes camera snapCLI helper - Uses the
MEDIA:<path>temp-file output from OpenClaw
Takeaway
If your model is struggling, it’s probably doing work it shouldn’t be doing.
Give it better primitives — it suddenly looks a lot smarter.
