
From the creators of the LazyOwn Redteam Framework: a free, open-source web browser written from scratch in pure C11, built on Zero Trust and Zero Knowledge. No telemetry, no backdoors, no implicit trust. What cannot be audited does not get in.
Freedom = Free (libre, open source) + DOM (and domain-level control). Freedom officially bans Google: its services cannot be implemented without telemetry, mandatory API keys or hidden solver workers.
io_uring is blocked).X25519MLKEM768 on native
OpenSSL 3.5+. Downgrades warn; authenticity is never relaxed.allow.conf / js.conf). Tor and I2P route at the socket level.@layer/@supports/media queries, custom
properties, inline SVG, HarfBuzz shaping with local fonts, and image decoding inside the
sandbox.--download-png,
--dump-dom, --dump-layout and --dump-console, plus an MCP server.make parity, make wpt).git clone https://github.com/grisuno/FreeDom.git && cd FreeDom
sudo apt install libavformat-dev libavcodec-dev libavutil-dev libswscale-dev # plus the Dockerfile deps
make
./build/freedom # GUI (Wayland)
./build/freedom --download-png=page.png https://lobste.rs # headless render
Docker + noVNC (recommended for a first try):
sudo docker build -t freedom-browser .
sudo docker run -it --name freedom-test -p 8080:8080 --cap-drop=ALL \
--security-opt no-new-privileges:true --memory="2g" freedom-browser
# then open http://localhost:8080/vnc.html
Full instructions are in docs/USAGE.md.
Each pair below was rendered headless at 1000 px wide from the same frozen snapshot of
the page. Both engines ran under the same rules: author CSS on, JavaScript off, no
third-party network. Each pair shows the top of the page; the number is the
make parity divergence (lower is better, 0 = identical geometry).
| Hacker News (3.04) | Wikipedia (3.57) |
|---|---|
![]() |
![]() |
| andreagrandi.it (3.01) | Hugging Face (5.67) |
![]() |
![]() |
| GitHub (2.85) | Slashdot (2.67): still the hardest page |
![]() |
![]() |
| Discord (2.96) | GitLab (2.48) |
![]() |
![]() |
These images and scores are regenerated automatically by make fbench (tools/fbench.py) from build/parity/*.{fd,ff}.png. The
measurement method is in spec/parity.md.
How long each browser takes from the navigation request until the page is painted and quiet
(median of 3). Freedom is measured in its real window (the GUI binary under a nested weston,
the same load and paint path a user’s session takes, not a headless mode); Firefox from its own
Performance Timeline (max(load event end, first contentful paint)), which is a lower bound of its
true idle time. Same frozen pages, same policy (author CSS on, JavaScript off, no third-party
network). Regenerated by make fbench; method in spec/parity.md.
| Page | Freedom (GUI) | Firefox | Freedom / Firefox | | :– | –: | –: | –: | | Wikipedia | 202 ms | 103 ms | 2.0x | | GitHub | 484 ms | 111 ms | 4.4x | | Slashdot | 120 ms | 50 ms | 2.4x |
| Document | Contents |
|---|---|
| docs/USAGE.md | Building, headless tools (--dump-*), Freebug console, shortcuts, JS allowlist, Tor/I2P, host filtering, video debugging, Docker, MCP server |
| docs/FEATURES.md | Full feature list and the rendering-engine milestones in detail |
| docs/DEVELOPMENT.md | Fuzzing, project structure, CI/CD, security, make targets |
| CLAUDE.md | Working contract: principles, methodology (SDD + TDD), status and roadmap |
| spec/ | One specification per module (inputs, errors, security guarantees) |
| spec/threat-model.md | Assets, adversaries, trust boundaries and mitigations |
| SECURITY.md · CONTRIBUTING.md · CHANGELOG.md | Reporting, contributing, history |
| KNOWLEDGE_BASE.md | Generated architecture reference (see below) |
AGPL-3.0. See LICENSE.
For more information, visit the GitHub repository.
This project has been analyzed by ReadMenator,
a zero-token polyglot static analysis tool. Regenerate with
pip install readmenator && readmenator . --rebuild. Analysis outputs:
INDEX.md – Quick reference: what each file doesSYMBOLS.md – Every symbol with file:lineARCHITECTURE.md – Internal dependency pairs + external importsAPI.md – Public function contractsGOTCHAS.md – Change warnings (blast radius, cycles, hotspots)SECURITY.md – Findings by severity with fix hintsMEMORY.md – Rules, workflow, style, deliverables, session logMANIFEST.json – Freshness (git_commit + source_fingerprint) + read orderKB_<subsystem>.md – Per-subsystem contextrecipes/*.md – Grounded task guides (add-function, fix-cycle, …)index.md – Entry point: overview, reading order, god nodes, connectionscommunity_*.md – One synthesis page per code communityconnections.json – Typed bridges between communitiesqueries.md – Suggested questions + answer logREPORT.md – Honest audit: coverage, confidence, limitsindex.json + REPORTS.md – Query with readmenator . ask "<question>"index.md + modules/*.md – Signatures, parameters, returns, raises, examples, call graphsarchitecture.md – Tiered architecture + execution flows (control flow, call tree, sequence)classes.md, genindex.md, COVERAGE.md – Hierarchy, A-Z index, doc coverage + warningsindex.html + api/ – Offline searchable browser and machine-readable model (api/index.json, api/modules/*.jsonl one entity per line)index.html).
graph-force.html – Force-graph explorer (2D/3D, reach, paths, lenses)graph-bundle.html – Edge bundle explorer (circle + sphere)components.html – Component diagramsllms.txt (agent entry point) + md/ docs + videoanalysis.json + graph LR markdown + per-component pages + index.html*.yml),
yara_rules.yar (YARA-lite) + exclusions.yaml (false-positive blocklist)Cache (.readmenator_cache/), packaged agent skills (.claude/skills/), and the
GitHub wiki mirror are also produced on run/--rebuild.
AI agents: Read readmenator-wiki/index.md first for the big picture, then readmenator-agent/INDEX.md for grep-friendly lookup.
Developers: Read KNOWLEDGE_BASE.md for full architecture reference, open readmenator-maps/index.html for the visual gallery.
Deployed with deploynator