Skip to main content

face-cli

A simulated face rendered in the browser that appears three-dimensional on a flat 2D screen and can look in any direction — an agent-drivable gaze surface for robots, kiosks, and screens.

Status: scaffold. The renderer does not exist yet. What ships today is the agent-first CLI baseline, the mesh identity, and CI. The face itself is being designed in the open — see the build brief and CLAUDE.md.

The idea

Two halves, and both are the interesting part: the illusion of depth on a flat surface, and a gaze that can be pointed anywhere and reads as pointed there. Everything else is in service of those.

face-cli is the expressive output side of a face. Its sibling face-recognition-cli is the perceptual input side — it identifies real people from camera frames. They share a subject and nothing else.

Decided so far

  • The render target is the browser — a local page driven over canvas/WebGL/SVG. It needs no display server (so it runs on a headless robot box), the screen showing the face need not be the machine running the process, and a page can be screenshotted and diffed in CI. The technique within the browser is still open.
  • The rendered face must survive face recognition. Not photorealism — a detector-passing bar: OpenCV YuNet should detect it above the standard 0.6 score threshold, and SFace's 128-dim embedding should stay stable across the whole gaze range. That turns "it looks 3D" into an assertion CI can actually make, and it is the seam along which this repo composes with face-recognition-cli.

Open questions — the gaze primitive, the control channel between a one-shot CLI call and a live page, whether expression is in scope, one face or many — are tracked in CLAUDE.md and the brief.

Quickstart

uv sync
uv run pytest -n auto                 # run the test suite
uv run face whoami                    # identity from culture.yaml
uv run face learn                     # self-teaching prompt (add --json)
uv run teken cli doctor . --strict    # the agent-first rubric gate CI runs

The console command is face; the import package is face_cli and the PyPI distribution is face-cli. The mismatch is deliberate — a bare face is already a published distribution on PyPI, so squatting that import would shadow it.

CLI

Verb What it does
whoami Report this agent's nick, version, backend, and model from culture.yaml.
learn Print a structured self-teaching prompt.
explain <path> Markdown docs for any noun/verb path.
overview Read-only descriptive snapshot of the agent.
doctor Check the agent-identity invariants (prompt-file-present, backend-consistency).
cli overview Describe the CLI surface itself.

Every command supports --json. Results go to stdout, errors/diagnostics to stderr (never mixed). Exit codes: 0 success, 1 user error, 2 environment error, 3+ reserved.

No gaze or render verbs exist yet — the list above is the scaffold's introspection surface.

What's in the box

  • An agent-first CLI cited from teken (afi-cli) — the runtime package has no third-party dependencies.
  • A mesh identity — culture.yaml (suffix + backend) and the matching resident prompt file (AGENTS.colleague.md, since this agent runs backend: colleague).
  • The canonical guildmaster skill kit under .claude/skills/, vendored cite-don't-import. See docs/skill-sources.md.
  • A build + deploy baseline — pytest, lint, the agent-first rubric gate, and PyPI Trusted Publishing wired into GitHub Actions.

Contributing

Every PR bumps the version (version-check CI blocks merge otherwise) and adds a real CHANGELOG entry. See CLAUDE.md for the full conventions — the cicd PR lane, worktree layout, and deploy setup.

License

Apache 2.0 — see LICENSE.

Metadata

Release files for face-cli 0.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for face-cli 0.7.1
File Size Uploaded Provenance
face_cli-0.7.1.tar.gz 163.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for face-cli 0.7.1
File Interpreter ABI Platform
face_cli-0.7.1-py3-none-any.whl Python 3 none any Details

Total release size: 187.0 kB

Release files / face_cli-0.7.1.tar.gz

Download URL face_cli-0.7.1.tar.gz
Size 163.2 kB
Tags Source
SHA-256 checksum
How to use checksums
7a57b5091cf566b6e0d3f9a25d88791fcc66e2a1f8194c3ed94238d9af7a9070
BLAKE2b-256 checksum
How to use checksums
59732e1126f364619229e3276fdf123863c970c8e15a8b5bad617bc92a911a2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / face_cli-0.7.1-py3-none-any.whl

Download URL face_cli-0.7.1-py3-none-any.whl
Size 23.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fc68efb2324d73be95fe1118f46e008ea34428644286baccf39e3c8260e0ad96
BLAKE2b-256 checksum
How to use checksums
d558d4eed68298acb242410a60e3dbb05ba0ac78c6e690ddd1bd1cd2a1125488
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for face-cli 0.7.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page