Faceless Desk

Faceless Desk: an early Rust foundation for faceless YouTube channels

Faceless Desk is a Rust workspace commissioned by Omega Labs for a planned production loop across several faceless YouTube channels run by one operator. The foundation crates hold a state machine, configuration layering, a store schema, a pure policy evaluator, and an EDL validator; no pipeline has run.

The problem

One operator running several faceless YouTube channels needs niche research, scripting, editing, review, and analytics in one loop. Spend and publishing mistakes are costly, and one channel's data must never reach another channel.

01 / 06

What is Faceless Desk, and who is it for?

Faceless Desk is a desk written in Rust and commissioned by Omega Labs. It is meant for an operator who owns several faceless YouTube channels and holds the rights to publish on them. The project plans to automate the production loop for those channels: niche discovery, trend validation, ideation, scripting, voiceover, visual assets, edit decision lists (EDLs), QA, human-approved publishing, and analytics. The foundation is in place. Most of that loop is not yet built.

"Faceless" means no on-camera person, and generated media is planned. No code adds an avatar, presenter, or voice cloning. The project rules out impersonating real people and generating deceptive synthetic media.

02 / 06

What problem does it solve?

  • One operator runs several channels, so the production loop has to serve all of them without mixing their data. The plan treats each channel as an isolated tenant.
  • Spend and publishing are the risky steps. The plan caps spend per job and per month, and it requires a human approval record before any upload. Those rules are planned. The checks that enforce them exist as pure evaluation, and no publish path uses them yet.
  • The plan is that each finished video traces from niche to approval through hash-bound records, so a human decision applies to the exact render and metadata that go live. This is planned, not built.

03 / 06

What is built, and what is not?

The repository holds foundation crates only.

  • Core state machine (faceless-core). It defines the job states and a total transition table. An illegal move returns a typed error.
  • Configuration layering (faceless-config).
  • Store schema (faceless-store). It defines tables for channels, jobs, job transitions, step attempts, a spend ledger, and metrics.
  • Policy rules evaluator (faceless-rules). It is a set of pure functions over a snapshot the caller supplies.
  • EDL validator (faceless-video).

The following are not built:

  • bots and roles
  • connectors
  • a command-line interface
  • the publish path
  • the render pipeline
  • the YouTube adapter, which exists only as a mock, with the live adapter off by default
  • stock and licence sources
  • model providers

The project brief also plans a manifest for a later import into the Grok Bot runtime. Wiring the desk into that runtime is out of scope for the current run.

04 / 06

How do the policy checks work?

The rules evaluator is a total function. It reads nothing from the store and performs no I/O. A missing fact produces a denial with a typed reason, not a default, and a malformed approval hash denies as a mismatch. The checks read their limits from rules/policy.toml:

  • Spend caps. $2 per job, $30 per channel per month, and $25 across all channels per month. The global cap sits below the sum of the channel caps.
  • Banned topics. A denylist of four expert-persona formats: health, legal, finance, and politics.
  • Asset licences. An allowlist of licence identifiers. Hosted generation is an excluded class.
  • Duplicate window. A similarity threshold, set at 85 percent in the policy file, applied against the channel's prior 20 videos.
  • Publish approval. The bound render and metadata hashes must equal the current hashes. A malformed hash can never match, so it denies.

None of these checks is wired to a publish action yet. The transition table holds one approval rule: a job moves to Approved only when the binding matches. A later change to the binding moves the job back to review.

05 / 06

Current status

Faceless Desk is early foundation, in development. No pipeline has run, and the publish path is not built.

Status is taken from commit 34449a5 on the main branch. The verification report 02-VERIFICATION records the Phase 2 foundation as passed. This page did not re-run it. The brief also states that the Phase 3 spike must pass before any pipeline work starts.

Built: the five foundation crates listed above.

Not built: the items listed in the section on what is built and what is not. No job has been driven through the state machine by a pipeline, and no channel has been run.

06 / 06

Source notes

Paths are relative to the faceless-desk repository.

  • .planning/PROJECT.md
  • crates/faceless-core/src/transition.rs
  • crates/faceless-rules/src/eval.rs
  • crates/faceless-store/migrations/0001_initial.sql
  • rules/policy.toml

Questions

Frequently asked questions

01

Is Faceless Desk running channels today?

No. The repository is an early foundation, in development. The foundation crates are built, but no pipeline has run, so there are no channel results to report.

02

Does Faceless Desk publish videos to YouTube?

No. No publish path is built. The YouTube adapter exists only as a mock, and the live adapter is off by default. The planned publish rule requires a human approval record bound to the exact render and metadata hashes.

03

What do the spend caps do?

The policy file sets $2 per job, $30 per channel per month, and $25 across all channels per month. The rules evaluator checks these caps as pure functions. None of the checks is wired to a publish action yet.

04

Does Faceless Desk add an avatar, a presenter, or a cloned voice?

No. In this project, faceless means no on-camera person. Generated media is planned. No code adds an avatar, presenter, or voice cloning.

Sources

Sources

  • Project brief faceless-desk, .planning/PROJECT.md
  • Core state machine faceless-desk, crates/faceless-core/src/transition.rs
  • Policy rules evaluator faceless-desk, crates/faceless-rules/src/eval.rs
  • Store schema faceless-desk, crates/faceless-store/migrations/0001_initial.sql
  • Policy file faceless-desk, rules/policy.toml