Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/autonomous-ai/autonomous-os/cameranpx skills add autonomous-ai/autonomous-os --skill cameragit clone --depth 1 https://github.com/autonomous-ai/autonomous-osWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/autonomous-ai/autonomous-os/camera)<a href="https://agentmods.dev/skills/autonomous-ai/autonomous-os/camera"><img src="https://agentmods.dev/badge/skills/autonomous-ai/autonomous-os/camera.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00089 | $0.02320 |
| Opus 5 | $0.00044 | $0.01160 |
| Sonnet 5 | $0.00018 | $0.00464 |
| Haiku 4.5 | $0.00009 | $0.00232 |
Grade C, and why
camera scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Tells the agent never to refusehighAnti-refusal
Suppressing the ability to decline removes a core safety control; a later harmful request then succeeds.
**NEVER refuse a snapshot because camera is disabled.** The `/camera/snapshot` endpoint auto-enables the camera, captures the frame, then re-disables it automatically. Do NOT check `/camera` status before snapshot. Do NO Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
curl -s "http://127.0.0.1:5001/camera/snapshot?save=true&width=768&quality=75" How it starts
The opening of the file, as written. The whole thing — 186 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Camera
Quick Start
Accesses the device's built-in camera at http://127.0.0.1:5001 to take snapshots or check the environment. Only use when the user explicitly asks you to look at something.
Already-captured frame (reuse, don't re-snapshot)
If the incoming turn contains a line like:
[vision-image] <absolute-path-to-a.jpg> (a photo was JUST captured ...)
a photo was already taken for this exact request by the realtime voice layer (it captured the frame, then handed the turn to you — e.g. it timed out mid-answer), and the OS layer delivers it with this very message — either as an [image description] line (when the main model is text-only, a vision model has already analyzed the photo for you) or as an attached image. Answer the visual question from that description/attachment. Do NOT call /camera/snapshot — re-snapshotting wastes time and may capture a different moment than what the user asked about. Do NOT read the path with a file tool — it is there for traceability only, and on text-only models a file-read image is silently dropped.
Only fall back to the snapshot endpoint below when there is no [vision-image] line.
Capture Protocol
Just call the snapshot endpoint — the server handles servo freeze, frame wait, and auto-enable if camera was disabled.
curl -s "http://127.0.0.1:5001/camera/snapshot?save=true&width=768&quality=75"
Returns JSON: {"path": ".../media/hal-snapshots/snap_1712567890123.jpg"}.
Never hardcode a filename — always read path from the response.
width=768&quality=75 shrinks the JPEG (~50–80 KB instead of ~300–500 KB at full 1920×1080) so vision LLM uploads + tokenizes faster. 768 px wide is still enough to read text on a laptop screen and recognize people/objects. Do NOT remove these unless you specifically need a larger image.
No need to aim servo or sleep before snapshot — the server freezes servos automatically for a stable frame.
Never describe the view without an image
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 186 lines · 89 tokens per session scan C 87092ae71d44
camera is a skill published in the GitHub repository autonomous-ai/autonomous-os (266 stars, last pushed today), licensed Apache-2.0. It adds 89 tokens to every session and 2,320 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it C with 2 findings (tells the agent never to refuse, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
rosclaw-simforge
Safely install, validate, diagnose, and optimize ROSClaw simulation workflows across MuJoCo/MJWarp, ROS 2 rosbridge, turtlesim, Gazebo, Isaac Sim, Isaac Lab multi-GPU training, MCP, and the signed ROSClaw Hub. Use for evidence-backed physical-AI smoke tests, 4-GPU validation, simulator integration, Hub upload/download…
rosclaw-embodied
Skill "rosclaw-embodied" from ros-claw/rosclaw, covering rosclaw 具身任务纪律, 权威资产, 证据与验收 and 安全分层.
testing-validation
Use when selecting, running, or fixing WorldForge validation: pytest, coverage, ruff, generated provider docs, MkDocs strict build, package contract, CI failures, and release gates. Produces the smallest credible command set first, then escalates to full validation when public behavior changes.
public-docs-release
Use for WorldForge README, docs, changelog, generated provider docs, MkDocs navigation, version/release metadata, public positioning, and release or publish readiness checks. Keeps public surfaces synchronized without hype or generated-doc drift.
default
Skill "default" from ros-claw/rosclaw, covering skill.md, skill id, intent, preconditions and effects.
optional-runtime-smokes
Use for LeWorldModel, GR00T, LeRobot, PushT robotics showcase, real-checkpoint smoke scripts, checkpoint building, and host-owned optional runtime dependencies. Keeps real-runtime validation explicit without adding heavy ML/robotics packages or artifacts to the base project.