Reference
Every crate and every source file, generated from the doc comments in the code.
These pages are written by tools/docs/generate.py from the //! and /// comments in the source, so they cannot disagree with it. Regenerate with the same command; CI runs it with --check and fails if the tree and these pages have parted company.
The website’s own source, every script and stylesheet this site is made of, explained technically and then in plain words.
fuzz
container_header.rsThe .veil container header, coverage-guided.guard_manifest.rsThe integrity manifest parser, coverage-guided.hybrid_keys.rsKey and encapsulation decoding, coverage-guided.lock_file.rsThe app-lock file, coverage-guided.release_contents.rsThe release contents list parser, coverage-guided.wav_chunks.rsThe RIFF chunk walker in veilvoice-meta, coverage-guided.wav_preflight.rsThe WAV pre-flight in veilvoice-audio, coverage-guided.
veilvoice-audio
Real-time capture and playback (cpal), lock-free ring buffers, virtual-cable routing and file import for VeilVoice.
devices.rsEnumerating audio devices, and guessing which of them are virtual cables.io.rsReading and writing audio files.lib.rsEverything between the sound hardware and veilvoice_core: device enumeration, file import and export, and the real-time capture → de-identify → playback path.live.rsLive microphone scrambling.meter.rsThe scale a level meter is drawn on.playback.rsPlaying a recording that is only in memory, and never on disk.record.rsRecording the veiled voice without it ever reaching unprotected memory.room.rsRoadmap item 147.
veilvoice-cli
Command-line interface for VeilVoice: anonymise files, scramble a microphone live, strip metadata, encrypt recordings.
accel.rsveilvoice accel reports the graphics hardware here, and what it is good for.appctl.rsveilvoice appctl learns what normally runs, so it can notice what does not.atrest.rsEncryption at rest for the recordings VeilVoice writes, and the passphrase prompts that feed it.capture.rsveilvoice capture -- which screen recorders are running, and which of them you have said you meant to run.conversation.rsveilvoice conversation -- several speakers, a voice each, and subtitles.decoy.rsveilvoice decoy, and what a second passphrase is worth and what it is not.failsafe.rsveilvoice failsafe is the safety catch.guard.rsveilvoice guard -- record what VeilVoice's files should be, and check them.gui.rsveilvoice gui opens the desktop application from the command line.input.rsveilvoice input shows which running programs can see your keyboard and mouse.lock.rsveilvoice lock manages the application lock from the command line.main.rsveilvoice, the command-line interface.mandate.rsveilvoice mandate -- the two things VeilVoice insists on, and how to stop.meter.rsLevel meters for veilvoice live, on a scale that means something.policy.rsveilvoice policy -- settings that can only be tightened.priv_mode.rsveilvoice privilege shows what VeilVoice runs with, and what it can see.record.rsveilvoice record -- capture the veiled voice straight into an encrypted file.sentry.rsveilvoice sentry -- canaries, baselines, and what changed since.theme.rsTokyo Night colouring for the terminal.
veilvoice-conversation
Several speakers in one recording: who spoke when, a distinct voice for each, names, and subtitles.
edit.rsCorrecting a plan: who is speaking when, what they are called, and in what colour.lib.rsSeveral people in one recording: a plan of who spoke when, a distinct destination voice for each of them, and subtitles that carry their names.mode.rsHow many voices a group gets, and the trade between the two answers.plan.rsWho is in the recording, and who is speaking when.render.rsTurning a plan and a recording into veiled audio, one engine per speaker.subtitles.rsSubtitles, from the same plan the audio is rendered from.
veilvoice-core
Irreversible voice de-identification DSP engine: cryptographically-modulated pitch/formant scrambling with preserved intelligibility.
accent.rsAccent and speaker-trait neutralisation.chain.rsThe assembled de-identification chain and its live performance statistics.effects.rsLight time-domain effects applied after resynthesis.lib.rsThe security-critical heart of VeilVoice: an irreversible, cryptographically modulated voice de-identification engine.modulation.rsCryptographically-seeded modulation of the effect parameters.pitch.rsMonophonic fundamental-frequency tracker (decimated YIN).spectral.rsFrequency-domain de-identification transform.stft.rsStreaming short-time Fourier transform with overlap-add resynthesis.voices.rsDestination voices: several canonical registers instead of one.window.rsAnalysis and synthesis windowing, and the one constant that keeps overlap-add honest.spectrum_report.rsWhere do the output partials actually land?veil_a_buffer.rshostile_audio.rsThe engine against input that is not well-behaved audio.
veilvoice-crypto
Argon2id KDF, X25519+ML-KEM-768 hybrid KEM, XChaCha20-Poly1305 at-rest encryption and page-locked amnesic secrets for VeilVoice.
aead.rsAuthenticated encryption with XChaCha20-Poly1305.amnesia.rsAmnesic secret storage: page-locked, zeroized, and never printed.container.rsThe .veil encrypted container format.decoy.rsA second passphrase that opens a different, empty VeilVoice.hoard.rsThe obfuscated program folder: what VeilVoice keeps on disk, under names that mean nothing and beside files that hold nothing.hybrid.rsPost-quantum hybrid key encapsulation: X25519 + ML-KEM-768.kdf.rsPassword-based key derivation with Argon2id.lib.rsKey derivation, post-quantum-hybrid key agreement, authenticated encryption and amnesic secret storage for VeilVoice.lock.rsThe application lock: an Argon2id password verifier with a rate limit.privatefile.rsWriting a file that only its owner can read.shred.rsSecure erasure, the self-destruct.studio.rsThe studio vault: a key that exists only when both locks have been opened.tape.rsA recording held in locked, zeroizing memory while it is still being made.vault.rsWhere the app lock is kept: two copies, unpredictable names, and a restore.weave.rsThirty-one reversible encodings, chosen at random, applied around the encryption -- before it, after it, or both.seal_and_open.rsparser_fuzz.rsRandomised robustness testing for the two parsers that read untrusted input.timing.rsTiming measurement of the password paths.
veilvoice-guard
Integrity manifest and tamper detection for VeilVoice's own files, with best-effort attribution of what changed them.
blame.rsBest-effort attribution: which program changed a file.lib.rsTamper detection for VeilVoice's own files: a manifest of what they should be, a check of what they are, and a best-effort answer to "what changed them".manifest.rsThe integrity manifest: what the files were, and what they are now.
veilvoice-gui
egui/eframe front-end for VeilVoice: Tokyo Night, monospace, three modes.
app.rsThe VeilVoice desktop application: seven tabs, one window, no menus.autolock.rsLocking the window again after a period of no use.avnotice.rsNoticing when antivirus software has closed VeilVoice, and saying so kindly.crashlog.rsMake a failure that produces no output produce some.crashreport.rsOffering the report from the last crash, on the run after it.decoys.rsDecoy vaults: how many there is room for, and the panel that offers them.dialog.rsAsking for a file without stopping the window.firstrun.rsThe first run: the four things worth deciding before anything else.graphics.rsWhat the window is drawn with, asked for explicitly and then reported.group.rsGroup mode: several people in one recording, each with a name and a colour.integrity.rsThe integrity record, taken and checked by the window rather than by hand.layout.rsCentring a row of widgets, which egui does not do by nesting.lib.rsThe VeilVoice desktop application: an egui/eframe front-end, monospace throughout: anonymise a file, scramble a microphone live, watch what is listening, manage the app lock, choose how the app looks, and an about panel that states the honest scope.main.rsEntry point for the desktop application: open a window, hand it to veilvoice_gui::VeilVoiceApp, and get out of the way.monitor.rsThe live monitor: what is going in, and what is coming out, wherever you are.notify.rsHow the application tells you something, and the three ways to be told.pace.rsHow often the window draws while something in it is moving, and what that actually came to.palettes.rsUser-defined colour schemes, and the contrast check that keeps them usable.paths.rsExactly where this copy of VeilVoice is keeping things.policy.rsThe policy in force, and what the interface does about it.prefs.rsWhat the user has chosen about how the app looks and moves.reduced_motion.rsWhether the operating system has been asked to reduce motion.security.rsThe application lock, and the at-rest encryption of what VeilVoice writes.settings.rsThe settings panel: a menu of pages, each a titled group of choices.setup.rsThe setup tab: install this copy, undo that, and the optional companions.soundbar.rsThe animated mark: a row of bars that rise and fall.storage.rsWhere veiled recordings are written, and the encrypted volume that may hold them.studio.rsThe Recording Studio and the Recording Browser.theme.rsColour schemes for the desktop app.tour.rsThe short tour on a first run, and after an upgrade.updates.rsThe manual update check, as the window shows it.vault_store.rsWhere the desktop application keeps its own files, and what the app lock buys for them.verify.rsThe verify tab: drop a download on the window and be told what it is.watchfeed.rsThe device monitor, moved off the thread that paints.window.rsHow big the window opens, and why it is not a constant.
veilvoice-meta
Strip or spoof identifying metadata: audio tags, and image EXIF/GPS.
audio.rsAudio tag removal and replacement.image.rsImage EXIF/GPS removal.lib.rsStrip or spoof the identifying metadata that rides along with media files.wav.rsChunk-level RIFF/WAVE metadata removal.wav_fuzz.rsRandomised robustness testing for the RIFF chunk walker.
veilvoice-policy
Settings that can only be tightened, sealed with the project's own post-quantum cryptography.
lib.rsSettings somebody else decided, sealed so they cannot be edited without a passphrase, and, more importantly, built so that editing them without one buys nothing worth having.mandate.rsThe two things VeilVoice insists on unless you say otherwise.policy.rsThe policy itself: what can be required, and what requiring it does.workspace.rsNamed profiles and saved projects.
veilvoice-setup
Per-user installation and companion-software detection, shared by the command line and the desktop app.
companions.rsOptional third-party software, detected rather than assumed.install.rsPut this program somewhere the system can find it.lib.rsEverything that puts VeilVoice on a machine, and everything that reports what is already on it.space.rsHow much room is actually free where VeilVoice keeps things.update.rsAsk, only when told to, whether a newer VeilVoice release exists.volumes.rsEncrypted volumes this machine already has: Cryptomator and VeraCrypt.
veilvoice-verify
Verify a VeilVoice release without GnuPG installed
builder.rsBuild VeilVoice here, and compare what came out against what was published.deps.rsWhat this machine needs before it can build VeilVoice, and who ships it.discover.rsFinding a release to check, without being told where it is.extracted.rsWhat came out of the archive, and the GnuPG somebody already has.fetch.rsDownload a release, without putting an HTTP client in the dependency graph.lib.rsThe portable verifier: check a VeilVoice release without GnuPG installed.report.rsHow much this program says, and what it returns when it says nothing.tests.rsThe verifier's own tests.release_manifest.rsRoadmap item 97.
veilvoice-video
A watchable version of a veiled conversation: a waveform, a circle per speaker, subtitles, and an honest account of what needs ffmpeg.
accel.rsWhat hardware this machine has, and the one place VeilVoice can use it.ffmpeg.rsThe video file, which needs a codec this project does not ship.font.rsA monospace face, five pixels by seven, drawn here.frames.rsThe video's pictures, and how many of them there really are.lib.rsA watchable version of a veiled conversation: the waveform, a circle per speaker, the title, the subtitles, and a background.page.rsThe picture: one still for a preview, and one page that plays.palette.rsColours: the site's own tokens, and one per speaker.raster.rsPixels, and a PNG to put them in.size.rsThe size and frame rate a video is rendered at.waveform.rsThe shape of the audio, reduced to something a page can draw.
veilvoice-watch
Detect which applications are currently using the microphone and camera, with alerts on change.
appctl.rsLearn what normally runs on this machine, then notice what does not.input.rsWhat on this machine could be watching the keyboard and the mouse.lib.rsFind out which applications are using your microphone and camera, right now.linux.rsLinux detection, via open file handles in /proc.privilege.rsWhat privilege VeilVoice is running with, and what each level can actually see.proc.rsWhich processes are running, per platform, and what that cannot tell you.windows.rsWindows detection, via the Capability Access Manager.scan_once.rsPrint what is using the microphone and camera right now.