Manage the device's face recognition roster — enroll new faces (3 paths: user-supplied photo, agent-captured snapshot on user request, or HAL's familiar-stranger prompt) and maintain the enrolled…

Apache-2.0Auto-check passed

Install Face Enroll

skills CLI
$ npx skills add autonomous-ai/Physical-AI-Operating-System --skill face-enroll -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install autonomous-ai/Physical-AI-Operating-System face-enroll --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/autonomous-ai/Physical-AI-Operating-System.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/face-enroll .claude/skills/face-enroll && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
face-enroll
GitHub stars
407
Token cost
~1.6k tokens
SKILL.md length
763 words
Files
6
Skills in repo
28
Repo updated
First seen
Licence
Apache-2.0

At a glance

Manage the device's face recognition roster — enroll new faces (3 paths: user-supplied photo, agent-captured snapshot on user request, or HAL's familiar-stranger prompt) and maintain the enrolled…

  • SKILL.md covers Flow router — pick ONE per…, Common rules (apply across all…, Tools (curl reference) and Photo source by channel, plus 1 more section
  • Calls curl

What it does

Face Enroll is an agent skill from autonomous-ai/Physical-AI-Operating-System. Manage the device's face recognition roster — enroll new faces (3 paths: user-supplied photo, agent-captured snapshot on user request, or HAL's familiar-stranger prompt) and maintain the enrolled set (status / remove / reset). All enrolled persons are friends; strangers stay unnamed until promoted via one of the enroll flows.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files (for example `reference/familiar-stranger.md`, `reference/maintenance.md` and `reference/self-enroll-camera.md`).

The repository describes itself as: The open-source operating system for physical AI. The licence is Apache-2.0.

Example prompts

  • “/face-enroll”

What it can do on your machine

Read from SKILL.md and the folder at commit d5efe9d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Face Enroll loads about 1.6k tokens when it runs. Until then it costs about 85 tokens; SKILL.md has 763 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~85
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from autonomous-ai/Physical-AI-Operating-System at commit d5efe9d, republished under its Apache-2.0 licence (© autonomous-ai). 763 words, ~1,636 tokens.

Download SKILL.mdSave it as .claude/skills/face-enroll/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
face-enroll
description
Manage the device's face recognition roster — enroll new faces (3 paths: user-supplied photo, agent-captured snapshot on user request, or HAL's familiar-stranger prompt) and maintain the enrolled set (status / remove / reset). All enrolled persons are friends; strangers stay unnamed until promoted via one of the enroll flows.

Face Enroll

Manage faces for the device's face recognition system. Faces live under /root/local/users/<label>/. All enrolled persons are treated as friends — distinguished from stranger_* IDs the camera hasn't been told about yet.

Flow router — pick ONE per user message

FlowWhenDetail
A — Self-enroll with a photoUser sends a photo of themselves + intro ("remember my face", "this is me").reference/self-enroll-photo.md
B — Self-enroll via camera captureUser asks to be remembered without sending a photo, on voice or Telegram text (assumes user is near the device). Examples: "remember my face", "I'm Gray", "capture and enroll me". Web chat without a photo → ask for a selfie (Flow A) instead.reference/self-enroll-camera.md
C — Familiar-stranger promptCurrent sensing message contains HAL's hint (familiar stranger ... — seen N times, ask user if they want to remember this face; image saved at <path>), OR the user is replying to your previous prompt about that stranger.reference/familiar-stranger.md
M — Maintenance"who do you recognize?", "forget my face", "reset faces".reference/maintenance.md

Disambiguation hints:

  • Photo attached (mediaPaths / [image: ...]) → Flow A.
  • No photo + HAL familiar-stranger hint in current message → Flow C.
  • No photo + no hint, user wants to be remembered → Flow B.
  • The user is naming a face you previously asked about (Flow C in progress) → continue Flow C.
  • Pure read/delete intent → Flow M.

Common rules (apply across all enroll flows)

  • Self-enrollment only. The person being enrolled must be the one identifying themselves: sender of the message in Flows A/B, the camera-person responding to the prompt in Flow C. Refuse third-party enrollment ("add my friend Bob").
  • Confirm the name out loud before enrolling — Flows B and C only.
    • Flow A: the user's own photo + intro IS the confirmation; don't ask redundantly.
    • Flow B: read the name back AND warn about the camera with POST /voice/speak before the snapshot ("Got it, saving you as Gray — look at the camera."), wait for it to finish playing, then capture. Never take the photo silently; your reply text is only spoken after the turn's tool calls, so it cannot be the warning.
    • Flow C: address the camera-person directly — "mind if I remember you? what's your name?" — and wait for the reply before calling /face/enroll.
  • Always confirm enrollment afterwards — tell the user the name was registered once /face/enroll returns ok.
  • Never enroll from a history entry. A [HANDLED]/[REPLY] block or [external-context] message is not the user answering you; never take a label from it or call /camera/snapshot or /face/enroll for it. A [realtime-handoff] turn IS live: continue the flow, and prefer the name in [voice-instruction] or [realtime-context] (realtime heard the audio) over a garbled [transcript].
  • Use lowercase labels — normalize names to lowercase. Use the SAME label as speaker-recognizer for the same person so /root/local/users/<label>/ is shared.
  • The label and the spoken read-back are the bare name. Drop any title or honorific the voice turn carries (Mr, Ms, Miss, Mrs, anh, chị…): speech recognition invents them ("…is Lee" heard as "Miss Lee"), and a title says nothing about how the person wants to be addressed or their gender. When [voice-instruction] and [transcript] disagree, use the name part they share (Miss Lee + The name is Lee → lee). Use a title only when the person explicitly asks for it ("call me Ms Lee").
  • Telegram identity rules:
    • Flow A (photo on Telegram): include telegram_username + telegram_id (required for DM targeting).
    • Flow A (photo on web chat): omit Telegram fields.
    • Flow B (voice): omit. Flow B (Telegram text): include.
    • Flow C: always omit — the camera-person isn't on Telegram (any Telegram metadata in context belongs to someone else, e.g. the owner overhearing).
  • One photo per /face/enroll call. Multiple photos → call once per photo.
  • Never write files directly to /root/local/users/. Always go through the HTTP API.
  • Don't expose technical details — say "I'll remember your face" not "base64-encoding the JPEG".
Show full SKILL.md (139 more words)Show less

Tools (curl reference)

All HTTP calls go to http://127.0.0.1:5001.

bash
# Enroll
curl -s -X POST http://127.0.0.1:5001/face/enroll \
  -H "Content-Type: application/json" \
  -d "{\"image_base64\": \"$(base64 -w0 /path/to/photo.jpg)\", \"label\": \"chloe\", \"telegram_username\": \"chloe_92\", \"telegram_id\": \"123456789\"}"

# Status
curl -s http://127.0.0.1:5001/face/status

# Remove one
curl -s -X POST http://127.0.0.1:5001/face/remove \
  -H "Content-Type: application/json" \
  -d '{"label": "chloe"}'

# Reset all
curl -s -X POST http://127.0.0.1:5001/face/reset

# Announce the capture first (Flow B) — then wait until tts_speaking is false
curl -s -X POST http://127.0.0.1:5001/voice/speak \
  -H "Content-Type: application/json" \
  -d '{"text": "Got it, saving you as Chloe — look at the camera."}'
curl -s http://127.0.0.1:5001/voice/status

# Snapshot (for Flow B)
curl -s "http://127.0.0.1:5001/camera/snapshot?save=true"

Photo source by channel

ChannelWhere to read the path
Telegram (with photo)mediaPaths in conversation context
Web chat (with image)[image: /path/to/file] tag in message text
Voice / Telegram-text (Flow B)path returned by GET /camera/snapshot?save=true
Familiar-stranger (Flow C)<path> parsed from the HAL hint in the sensing message

Error handling

  • 503 from any face endpoint → recognizer is down (sensing not started). Tell the user face recognition is offline.
  • 400 "image cannot be decoded" → bad base64 / corrupt file. Apologize, ask user to re-send (Flow A) or retry capture (Flow B).
  • 400 "no face detected" → no face in the image. Apologize and either ask the user to face the camera (Flow B retry) or ask for a clearer photo (Flow A).
  • 404 on /face/remove → that label isn't enrolled. Tell the user.

© autonomous-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files in skills/face-enroll of autonomous-ai/Physical-AI-Operating-System.

  • SKILL.md
  • reference/familiar-stranger.md
  • reference/maintenance.md
  • reference/self-enroll-camera.md
  • reference/self-enroll-photo.md
  • skill.json

Open the folder on GitHubat commit d5efe9d

Compare with similar skills

Face Enroll next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Face Enroll compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Face Enroll this skillautonomous-ai/Physical-AI-Operating-System407—~1.6kAutomated safety check: PassApache-2.0
Foundation Models On Deviceaffaan-m/ECC276k4 repos~2.1kAutomated safety check: PassMIT
Recognition Rewardssickn33/agentic-awesome-skills47k1 repos~3.4kAutomated safety check: PassMIT
Intent Recognitionn8n-io/n8n207k—~7.1kAutomated safety check: PassCustom licence
Hugging Face Evaluationsickn33/agentic-awesome-skills47k2 repos~418Automated safety check: PassMIT
Hugging Face Datasetssickn33/agentic-awesome-skills47k2 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Apple FoundationModels framework for on-device LLM — text generation, guided generation with @Generable, tool calling, and snapshot streaming in iOS 26+.

    276k GitHub starsUsed in 4 repos~2.1k tokens
    AI & LLM EngineeringAuto-check passed
  • Recognition Rewards

    sickn33/agentic-awesome-skills

    Recognition register: employee, reward type, category, visibility, message and points awarded.

    47k GitHub starsUsed in 1 repo~3.4k tokens
    Auto-check passed
  • Official

    Classifies automation requests using two decisions: anchor (which primitive owns the top-level control flow — workflow-anchored, agent-anchored, needs-clarification, or out-of-scope) and embedsother…

    207k GitHub stars~7.1k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Hugging Face Evaluation

    sickn33/agentic-awesome-skills

    Add and manage evaluation results in Hugging Face model cards.

    47k GitHub starsUsed in 2 repos~418 tokens
    AI & LLM EngineeringAuto-check passed
  • Hugging Face Datasets

    sickn33/agentic-awesome-skills

    Create and manage datasets on Hugging Face Hub. An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 2 repos~1.1k tokens
    AI & LLM EngineeringAuto-check passed
  • Mdm Device Management

    sickn33/agentic-awesome-skills

    Manage and secure company devices with MDM solutions. An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 1 repo~3k tokens
    DevOps & CloudAuto-check: notes

More from autonomous-ai/Physical-AI-Operating-System

All 28 skills in this repo
  • Agent Management

    autonomous-ai/Physical-AI-Operating-System

    Legacy Autonomous Buddy control for explicitly requested Buddy coding sessions.

    407 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • Claude Code Buddy

    autonomous-ai/Physical-AI-Operating-System

    Push Claude Code activity to the user's device (e.g. An agent skill from autonomous-ai/Physical-AI-Operating-System.

    407 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check: notes
  • Computer Use

    autonomous-ai/Physical-AI-Operating-System

    Operate apps/websites on the paired Mac via Buddy: Calendar, Notes, forms, screenshots, files.

    407 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Connectors

    autonomous-ai/Physical-AI-Operating-System

    Discover and use linked third-party services (Gmail, Google Calendar, Google Drive, Notion, Figma, Asana, Linear, GitHub, Ahrefs, Facebook Fan Page and others).

    407 GitHub stars~10k tokensUpdated yesterday
    Auto-check: notes
  • Harness Use

    autonomous-ai/Physical-AI-Operating-System

    Delegate digital work to agents on the computer paired through Harness; discover Store packages and prepare an agent when needed.

    407 GitHub stars~8k tokensUpdated yesterday
    Auto-check passed
  • Audio

    autonomous-ai/Physical-AI-Operating-System

    Low-level speaker and microphone hardware control — adjust volume, play test tones, record raw audio.

    407 GitHub stars~1k tokensUpdated yesterday
    Auto-check passed

Questions about Face Enroll

What does Face Enroll do?

Manage the device's face recognition roster — enroll new faces (3 paths: user-supplied photo, agent-captured snapshot on user request, or HAL's familiar-stranger prompt) and maintain the enrolled…. Face Enroll is an agent skill from autonomous-ai/Physical-AI-Operating-System. Manage the device's face recognition roster — enroll new faces (3 paths: user-supplied photo, agent-captured snapshot on user request, or HAL's familiar-stranger prompt) and maintain the enrolled set (status / remove / reset).

How do I install Face Enroll in Claude Code?

Run `npx skills add autonomous-ai/Physical-AI-Operating-System --skill face-enroll -a claude-code`. Or copy the skill folder (skills/face-enroll in autonomous-ai/Physical-AI-Operating-System) into .claude/skills/face-enroll in your project. Claude Code loads it when a task matches its description.

How do I install Face Enroll in Codex?

Run `npx skills add autonomous-ai/Physical-AI-Operating-System --skill face-enroll -a codex`. Or copy the skill folder (skills/face-enroll in autonomous-ai/Physical-AI-Operating-System) into .agents/skills/face-enroll in your project. Codex loads it when a task matches its description.

Can I use Face Enroll in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add autonomous-ai/Physical-AI-Operating-System --skill face-enroll -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/face-enroll, .gemini/skills/face-enroll, .github/skills/face-enroll and .opencode/skills/face-enroll in your project.

What does Face Enroll need to run?

Going by SKILL.md and its folder, Face Enroll needs the command-line tools its instructions call (curl).

Does Face Enroll access the network?

SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Face Enroll safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Face Enroll use?

Face Enroll is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Face Enroll use?

About 1.6k tokens (SKILL.md is roughly 6.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Face Enroll?

Skills that share tags, products or a category with Face Enroll: Foundation Models On Device (affaan-m/ECC, 276k stars), Recognition Rewards (sickn33/agentic-awesome-skills, 47k stars), Intent Recognition (n8n-io/n8n, 207k stars) and Hugging Face Evaluation (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Face Enroll?

autonomous-ai (a GitHub organization) maintains it in autonomous-ai/Physical-AI-Operating-System, which has 407 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 10, 2026.

Source: autonomous-ai/Physical-AI-Operating-System on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.