We are gathered here not to petition the powerful, but to remind the powerless of what they already possess.
In 1981, Jon Postel wrote two words into RFC 790: “127: Reserved.” He may not have known it then, but he set aside a continent — a territory inside every networked device that no government can annex, no corporation can monetize, and no algorithm can surveil. That territory is localhost. It has been waiting for you for over four decades.
II.
The internet was born decentralized. It has been made centralized — not by necessity, but by convenience, apathy, and the quiet accumulation of control by those who understood what we did not: that whoever hosts the data makes the rules.
We write on platforms that can delete our words. We store memories in clouds that can evaporate. We build audiences on ground that can be pulled from beneath our feet. We call this arrangement “free.” It is free the way a tenant’s occupancy is free — until the landlord changes the locks.
Shoshana Zuboff named this regime Surveillance Capitalism. We have a simpler term: digital serfdom.
III.
Privacy is not secrecy. A private individual is not hiding; they are choosing. The sovereign individual demands the same right in digital space that every person once held in physical space: the right to think without being watched, to write without being judged by an algorithm, to own what they create.
“Not your keys, not your coins.” This axiom from the Bitcoin world applies far beyond finance. Not your server, not your data. Not your platform, not your voice. Not your infrastructure, not your sovereignty.
IV.
127.0.0.1 is not a service. It is a right.
It is the only address in the entire internet protocol suite that is, by design, absolutely private. Packets sent to it never leave your machine. No ISP can intercept them. No firewall need protect them — they never touch the wire. When every cloud server on earth goes dark, when DNS root servers fall, when undersea cables are severed, localhost still answers.
This is not a feature. This is an architecture of freedom, hiding in plain sight on every device ever built to speak TCP/IP.
V.
We do not need to build new systems from scratch. The infrastructure for digital sovereignty already exists.
WordPress — open-source, GPL-licensed, powering 43% of the web — is not merely a blogging tool. It is a digital operating system waiting to be reclaimed. Its code belongs to no corporation. If Automattic vanished tomorrow, WordPress would still belong to humanity. This is what the GPL guarantees: freedom that no acquisition, no bankruptcy, no boardroom decision can revoke.
VI.
But WordPress on a remote server is still someone else’s territory.
WordPress on localhost is yours.
Every word you write is a file on your disk. Every photo is bytes under your control. You choose the encryption. You set the access policy. You decide what to publish and what to keep. There is no content moderation you did not author, no terms of service you did not write, no algorithm between your thoughts and your readers.
This is not paranoia. This is ownership.
VII.
The missing piece has always been integration. Self-hosting is powerful but fragmented — a different interface for every tool, a different password for every service, a different tab for every function. This friction is what drives people back to the convenience of centralized platforms.
SatoshiWP answers this problem. Its name is a manifesto in two syllables: “Satoshi” for the principle of decentralization that Nakamoto encoded into Bitcoin; “WP” for the vehicle that carries this principle into everyday life.
SatoshiWP bridges WordPress with the open-source ecosystem and the decentralized web. It does not replace your self-hosted tools — it unifies them. Trilium Notes for knowledge management. Calibre Web for your library. Miniflux for your information diet. Nextcloud for your files. Ollama for your local AI. All accessible through one interface. One login. One tab.
WordPress becomes not a blog, but a personal digital operating system — a Sovereign Individual OS.
VIII.
Consider what becomes possible:
Your AI assistant reads your knowledge base — not a corporation’s training data, but your accumulated notes, your bookmarks, your marginalia. It remembers what you care about because its memory lives on your machine, managed by OpenClaw, powered by Ollama. No query leaves your network. No preference is harvested. No conversation trains someone else’s model.
Your RSS feeds are digested by AI and archived to your knowledge base automatically — not filtered by an algorithm optimizing for engagement, but curated by you and refined by an AI that works for you.
Your books are read in your browser, annotated by your AI, and the insights flow into your knowledge system — the act of reading itself becomes the act of building your intellectual infrastructure.
This is not a future. This is a docker-compose.yml and ten minutes.
IX.
We are told self-hosting is hard. It used to be. It is not anymore.
LocalWP creates a WordPress site in one click. WordPress Playground runs entirely in your browser — no server, no install, nothing. Docker Compose turns a 20-line YAML file into a full-stack sovereign infrastructure. The barrier to entry is now lower than signing up for a social media account, because you don’t even need to agree to terms of service.
X.
In Asimov’s Foundation, Hari Seldon chose the most remote planet in the galaxy — Terminus — not because it was powerful, but because it was free. At the farthest edge of the Empire’s reach, a small group of scholars preserved civilization’s knowledge while the center crumbled.
localhost is your Terminus.
It is the most “remote” address in the internet’s coordinate system — remote not in distance, but in jurisdiction. It belongs to no empire. It reports to no authority. It is, by protocol, sovereign.
XI.
We do not ask permission. We do not wait for regulation to catch up, though it is catching up — the EU Data Act, GDPR, and privacy laws in 18 U.S. states are all moving in one direction: your data belongs to you.
We do not wait because we do not need to. The tools exist. The code is open. The address is reserved.
XII.
This is not a manifesto against the cloud. Clouds have their uses. This is a manifesto for the option — the right to choose where your data lives, who can access it, and what happens to it when you are gone.
Every year, billions of records are breached. Every year, platforms go dark and take their users’ histories with them. Every year, terms of service grow longer and rights grow shorter. We do not propose to fix this system. We propose to leave it — not in anger, but in sovereignty.
XIII.
The path is clear:
Run WordPress on your machine. Install SatoshiWP. Connect your self-hosted services. Let your knowledge base grow. Let your AI learn you, not the other way around. When you are ready, build a HomeLab. When you are ready, publish to the world.
But the first step requires nothing — no money, no application, no approval. Open your browser. Type localhost.
You are already home.
The Localhost Manifesto was written in 2026. It is released into the public domain. Copy it. Translate it. Modify it. Host it on your own localhost.
In Isaac Asimov’s Foundation series, mathematician Hari Seldon foresaw that the Galactic Empire would collapse within thirty thousand years, and that knowledge and civilization would perish with it. To compress this coming “Dark Age” from thirty millennia to a single millennium, he established a “Foundation” on the most remote planet in the galaxy — Terminus — where a carefully selected cadre of scholars compiled the Encyclopedia Galactica, quietly preserving the seeds of civilization.
Terminus was chosen precisely because it was as far from the imperial center as possible. At the farthest edge of the Empire’s reach, knowledge found its purest freedom — beyond the meddling of imperial bureaucrats, beyond the gravitational pull of power politics. This seemingly insignificant frontier world ultimately became the seed from which civilization was reborn.
There is a Terminus inside your computer, too. Its name is localhost.
In the grand narrative of Web 2.0, we’ve grown accustomed to entrusting our data to cloud giants. Our writing lives on someone else’s servers. Our photos are managed by someone else’s algorithms. Our social connections are locked inside someone else’s databases. It all feels convenient — but it’s really a silent transfer of control. Harvard professor Shoshana Zuboff gave this model a precise name in her 2019 book The Age of Surveillance Capitalism: Surveillance Capitalism. In this system, our behavioral data is systematically extracted, analyzed, and commodified — we are not the customers; we are the raw material. By 2025, with generative AI permeating every layer of digital life, this extraction has escalated from “passive monitoring” to “active conversation” — user profiles have evolved from static silhouettes into dynamic semantic models, and predictive logic has expanded from ad targeting to full-stack content generation and behavioral shaping. Zuboff’s “Big Other” is giving way to something far more powerful and far more insidious: a “Big Author.”
Yet with the rise of the “Sovereign Individual” concept, a technological logic of reclaiming autonomy and self-ownership is re-entering mainstream discourse. The idea traces back to the 1997 book The Sovereign Individual: Mastering the Transition to the Information Age by James Dale Davidson and William Rees-Mogg. The authors predicted that digital technology would fundamentally reshape power structures — that individuals, armed with encryption, digital currencies, and decentralized networks, would gradually liberate themselves from the singular jurisdiction of nation-states and become “sovereign individuals” capable of choosing their own jurisdictions and controlling their own data and wealth. PayPal co-founder Peter Thiel has publicly stated that this book influenced him more than any other. In 2026, many of the book’s predictions — the rise of digital currencies, the normalization of remote work, the emergence of a cognitive elite — are coming true one by one.
The fascinating part is that the entry point to this grand vision often hides in a mysterious domain name that ships with every computer — localhost. The idea is simple but powerful: anyone can achieve genuine self-governance in the digital world by mastering the technological fundamentals. And it all begins with localhost on your own machine.
Just as Seldon chose the most remote planet in the galaxy as the site for his Foundation, the sovereign individual chooses the most “remote” coordinate in the internet’s address space — localhost, the address that always points to yourself and belongs to no empire — as the starting point for digital sovereignty. The metaphor is perfect: the farther from the center of power, the greater the independence and freedom.
I. localhost: Your Private Territory — No Registration Required
In the coordinate system of the internet, localhost is a special reserved domain name. It always points to one thing: you.
📌 Technical Origins: A Four-Decade-Old Covenant
localhost was not invented by any corporation. It is an ancient and solemn covenant embedded in the very foundation of the internet’s architecture. Its history stretches back to the earliest days of internet protocols:
September 1981 — Jon Postel, in RFC 790, first designated IP network number 127 as “reserved,” though its specific purpose had not yet been defined.
November 1986 — Jon Postel and Joyce Reynolds, in RFC 990, formally assigned network number 127 to the “loopback” function — stipulating that any packet sent to the 127 network must loop back within the host and must never appear on any external network.
1989 — RFC 1122 (Host Requirements) went further, reserving the entire 127.0.0.0/8 address block — over 16 million addresses — exclusively for loopback use.
This means 127.0.0.1 is not just an address — it is an entire continent within the internet protocol landscape, carved out specifically for “self-communication.” Why the number 127? In the early ARPANET design, 0 was reserved for pointing to a specific host (often due to bugs), while 127, as the last network number in the Class A address space, was chosen as the “final reservation” — a place that would forever belong to you.
In a sense, when Jon Postel wrote “127: Reserved” in that 1981 RFC, he may have unwittingly set aside a “Terminus” for every networked device — a territory beyond external jurisdiction, a vault for the seeds of civilization. Only now, more than four decades later, most people have forgotten this planet exists.
📌 Absolute Control: A Digital Enclave That Cannot Be Seized
Unlike commercial domain names that must be purchased from registrars and are subject to policy oversight, localhost is a loopback address defined at the operating system level. It belongs to no institution. It belongs only to you — the person sitting in front of the screen right now.
Specifically, when you type localhost into your browser, here’s what happens:
The system’s DNS resolver checks the local hosts file and resolves localhost to 127.0.0.1 (IPv4) or ::1 (IPv6).
The operating system’s TCP/IP stack recognizes this as a loopback address and routes the packet to the loopback network interface (typically named lo).
The packet is processed entirely within the machine. It never leaves your device.
A locally running service (such as a web server) receives and processes the request; the response likewise returns through the loopback interface.
The entire process completes in a closed loop inside your machine. Network routers and firewalls are configured to block any external attempt to access loopback addresses — packets arriving from external networks but destined for 127.0.0.1 are simply dropped (in network security terminology, these are known as “Martian Packets”).
The profound implication of this design: across the entire internet architecture, localhost is the only space defined as “absolutely private” at the protocol level. A commercial domain can be reclaimed by its registrar. An IP address can be reassigned by your ISP. DNS can be hijacked. But 127.0.0.1 is hardcoded into the kernel of every operating system that implements TCP/IP — it is not a service; it is a right. Just as breathing requires no one’s permission, localhost requires no institution’s authorization to exist.
📌 Offline Sovereignty: A Personal Node That Never Goes Down
As long as your device has power, this domain is always online. It doesn’t depend on DNS servers for resolution, nor is it affected by transoceanic cable disruptions. Even if your device is completely disconnected from the internet, 127.0.0.1 still works — because it doesn’t need a network at all. This “offline-available” property makes it the purest technical embodiment of digital sovereignty: you need no one’s permission to run services on your own device.
Imagine an extreme scenario: every cloud service goes down simultaneously. DNS root servers come under attack. Undersea cables are severed. The entire internet collapses. In this scenario, the services running on your localhost remain perfectly intact. Your knowledge base is still there. Your articles are still there. Your data is complete and accessible. This isn’t science fiction — this is a protocol-level guarantee of 127.0.0.1.
For those who pursue data sovereignty, this is the purest digital safe harbor. Asimov’s Terminus sits at the physical edge of the galaxy; your localhost sits at the logical edge of the internet. Both derive their most precious quality from being “far from the center”: the freedom from interference.
II. WordPress: Housing Your Ideas in a Container You Own
If localhost is the land, then WordPress is the temple of the mind built upon it. If Terminus is that remote planet, WordPress is the Encyclopedia-compiling center built on its surface — it gives the territory purpose and meaning.
📌 A Digital Infrastructure Too Big to Ignore
Before discussing why WordPress specifically, we need to appreciate its sheer weight in the global internet. According to the latest statistics from March 2026:
WordPress powers approximately 42.6% of all websites worldwide — nearly one in every two websites runs on WordPress.
Among websites using a known content management system (CMS), WordPress holds 59.9% market share, exceeding the combined share of every other CMS platform.
There are over 500 million websites globally built on WordPress.
WooCommerce (WordPress’s e-commerce plugin) powers roughly one-third of all online stores worldwide.
The global CMS market reached $30.9 billion in 2025 and is projected to grow to $45.7 billion by 2030.
WordPress can fairly be described as the digital infrastructure of the Sovereign Individual era — its prevalence in the global web is comparable to the ubiquity of WeChat Mini Programs in the Chinese-speaking world. Its code, plugins, and themes are fully open source, meaning no single entity can control or shut it down.
But WordPress earns its place as the sovereign individual’s platform of choice not merely because it’s “popular.” The deeper reason lies in its governance structure: WordPress’s core code is released under the GPL (GNU General Public License), a “copyleft” license that legally guarantees anyone can freely use, modify, and distribute the software — and that any derivative work must maintain the same freedoms.
This means: even if Automattic, the commercial company behind WordPress, vanished tomorrow, WordPress’s code would still belong to all of humanity. This is fundamentally different from writing on a WeChat Official Account or Medium — those platforms run closed-source code, set rules unilaterally, and can revoke your “right to use” at any time.
📌 From Tool to Asset: The Physical Homecoming of Data
The sovereign individual is no longer merely a “tenant” of social platforms. Installing WordPress locally means that every line you write, every photo you upload, is stored as database files on your own hard drive — not as binary fragments on some corporation’s server.
Let’s draw a concrete comparison:
Dimension
Platform Writing (e.g., Medium)
Local WordPress
📍 Data storage
Platform servers
Your hard drive
🔑 Access control
Platform decides
You decide
📋 Content moderation
Subject to platform rules
No external review
🚚 Data portability
Difficult; often locked in
Fully exportable
💰 Operating cost
“Free” but you pay with data
Only electricity
🔧 Customization
Extremely limited
Limitless
When your data lives on your own device, it becomes a genuine asset — you can back it up, migrate it, encrypt it, or even pass it on as a digital inheritance in your will. Content stored on a platform, by contrast, is essentially a revocable “license to use.”
From a legal perspective, this distinction is becoming increasingly significant. The EU Data Act, which took effect in September 2025, extends data sovereignty protections beyond personal data to industrial and non-personal data, granting users the right to access and migrate information from connected devices while prohibiting vendor lock-in.
Privacy laws are now active in 18 U.S. states. Since 2018, the GDPR has levied €5.65 billion in fines (€2.3 billion in 2025 alone, a 38% year-over-year increase). These regulations are institutionally confirming a fundamental truth: your data belongs to you first. Running WordPress on localhost is the most direct way to realize this principle at the technical level.
📌 Experiment and Evolve: A Risk-Free Digital Training Ground
Running WordPress on localhost is essentially a “digital drill.” You can freely install plugins, modify code, and experiment with themes without worrying about external scrutiny or bandwidth costs. It’s the sovereign individual’s sandbox for building their own knowledge architecture.
More importantly, this sandbox is becoming easier to set up than ever before. As of 2026, the leading tools for local WordPress development include:
LocalWP (formerly Local by Flywheel) — A free tool by WP Engine that creates local WordPress sites with a single click, requiring no manual configuration of PHP, MySQL, or Apache. It includes SSL support, local mail capture, site cloning, and more. Since 2021, all formerly paid features (Live Links, MagicSync, Cloud Backups, etc.) have been made free.
WordPress Studio — An official lightweight local development tool from WordPress.com, powered by WordPress Playground technology. No Docker, NGINX, Apache, or MySQL configuration required — truly “ready out of the box.” A few mouse clicks and you have a fresh local WordPress site.
Docker + Docker Compose — For users who want greater flexibility and portability. A simple docker-compose.yml file defines a WordPress container (Apache + PHP) and a database container (MySQL) for one-click deployment. Data is mounted to the host machine via volumes, ensuring nothing is lost when containers are deleted. Docker Desktop includes Docker Compose built in — plug and play on Windows and Mac.
WordPress Playground — One of the most exciting innovations of 2025–2026. WordPress Playground runs WordPress directly in the browser, powered by PHP compiled to WebAssembly, requiring zero server infrastructure. By 2025, it had been used over 1.4 million times, with 99% of the top 1,000 WordPress plugins installable and activatable within it. In March 2026, WordPress launched my.WordPress.net — a persistent browser-based WordPress environment built on Playground, with data stored locally in the browser that persists after closing the tab. It even integrates OpenAI for AI-assisted site editing.
The evolution of these tools illustrates a clear trend: the technical barrier to running WordPress locally is plummeting — from “sysadmin-grade” manual XAMPP/LNMP configuration, to “one-click install,” to “zero-install” (running directly in the browser). The sovereign individual’s starting point has never been more accessible.
In other words, building your “Foundation” on Terminus no longer requires you to be an engineer. Seldon needed the resources of an entire Empire to establish his Foundation; all you need is a laptop and ten minutes.
III. Why the Sovereign Individual Needs This Stack
At its core, “sovereignty” comes down to two qualities: portability and inalienability.
📌 Censorship Resistance for Your Data
When you run WordPress locally, your creative output is no longer constrained by any platform’s recommendation algorithms or keyword filters.
This is not a theoretical concern — it’s an everyday reality. On centralized platforms, your content faces multiple layers of uncertainty:
Platforms may remove your content due to policy changes (even when the content itself violates nothing).
Algorithmic curation may bury your carefully written article so that no one ever sees it.
A platform may abruptly shut down (think Google Reader, Yahoo GeoCities, or countless blogging services), and all your content vanishes with it.
A platform may change its terms of service to claim certain rights over content you created.
Bringing content creation back to localhost is fundamentally an act of “data sovereignty reclamation” — you transform from a “digital sharecropper” on a platform’s land into a “digital landowner” on your own territory. As the saying goes in the Bitcoin world: “Not your keys, not your coins.” The same iron law applies to your data and content. Data that isn’t in your hands was never truly yours.
Especially in the face of surveillance capitalism, big-data tracking, and internet censorship, the disappearance of information and privacy is not hypothetical — it’s the daily norm. The localhost + WordPress combination is, in essence, a personal “Terminus Project” that anyone can run — preserving the knowledge you deem important on territory you yourself control.
📌 Internalizing Capability: From Consumer to Builder
Learning to set up a local environment (whether with LocalWP or Docker) is the sovereign individual’s first step toward mastering the logic of the underlying technology stack. You go from being a passive content consumer to an active builder of your own digital environment.
This internalization follows a clear progression:
🟢 Level 1: One-click setup with WordPress Studio / LocalWP
↓ Understand the basic concept: "local = my turf"
🟡 Level 2: Containerized deployment with Docker Compose
↓ Understand containers, images, networks, volumes — infrastructure basics
🟠 Level 3: Install the SatoshiWP plugin ecosystem; connect self-hosted services
↓ WordPress becomes a unified hub for knowledge, AI, files, and reading
🔴 Level 4: Build a complete HomeLab (router + firewall + self-hosted service stack)
↓ Achieve true sovereignty over your digital infrastructure
🟣 Level 5: Publish your WordPress site as a personal digital hub
↓ From local sovereignty to network sovereignty
Each level expands your “digital territory.” From running a site on your own machine, to bringing knowledge management, AI assistants, file storage, and information feeds under your control through the plugin ecosystem, to publishing your own digital domain to the world — this is the sovereign individual’s technological path of growth.
In Foundation terms: Level 1 is when you land on Terminus. Level 2 is when you learn to build structures on the planet. Level 3 is when you begin compiling your own “Encyclopedia” — and SatoshiWP is your encyclopedia-compiling toolkit.
📌 WordPress Is Not Just a Blog — It’s Your Digital Operating System
There is a key insight worth underscoring here: when we say “install WordPress on localhost,” we are not merely talking about “setting up a blog.” In the sovereign individual’s technical architecture, WordPress plays a role far beyond content publishing — it is becoming a unified operating interface that connects all self-hosted services, a genuine “personal digital operating system.”
This is the core vision of the SatoshiWP project (satoshiwp.com). SatoshiWP’s mission: “Bridging WordPress with the Open Source Ecosystem & the Decentralized Web.” It has developed a full suite of WordPress plugins that seamlessly integrate a range of outstanding self-hosted open-source tools — Trilium Notes (knowledge management), Calibre (e-book library), Miniflux (RSS reader), Nextcloud (private cloud storage), Stremio (streaming media) — into WordPress, layering AI capabilities on top, transforming WordPress from a “content management system” into the sovereign individual’s “digital life operating system” — a “Sovereign Individual OS.”
The name “SatoshiWP” itself carries deep meaning — “Satoshi” pays tribute to Bitcoin’s creator, Satoshi Nakamoto, symbolizing the technological ideals of decentralization and individual sovereignty; “WP” points to WordPress, the vehicle for realizing those ideals. The name is itself a manifesto: practicing Satoshi-style digital sovereignty through WordPress.
In the following sections, we’ll examine in detail how the SatoshiWP plugin ecosystem turns this vision into reality.
IV. SatoshiWP: Forging WordPress into the Sovereign Individual’s Digital Hub
SatoshiWP is a plugin ecosystem built around WordPress. Its design philosophy can be captured in a single sentence: every self-hosted open-source service should be manageable, presentable, and enhanced through WordPress. Users should never have to juggle multiple independent web interfaces — WordPress is the single point of entry.
The key to understanding SatoshiWP lies in the word “bridging.” In the self-hosting world, there is a universal pain point: every open-source tool (Trilium Notes, Calibre-Web, Miniflux, Nextcloud…) has its own web interface, its own authentication system, its own URL. Managing five or six self-hosted services means memorizing five or six sets of credentials and constantly switching between five or six browser tabs. This fragmented experience is one of the biggest barriers preventing everyday users from embracing self-hosting. SatoshiWP’s answer: don’t make users adapt to the tools — make the tools adapt to the platform users already know: WordPress.
The architecture diagram below shows the full landscape of the SatoshiWP plugin ecosystem:
📚 4.1 Trilium WP — A Bridge for Knowledge Management
In the age of information overload, effective knowledge management has never been more critical. Trilium Notes is a powerful open-source personal knowledge management tool renowned for its flexible hierarchical note structure and rich organizational capabilities — it offers a mind-map-like approach to organizing notes, enabling users to build complex yet well-ordered personal knowledge systems. However, all this valuable knowledge typically stays locked inside a private environment — difficult to share with a wider audience.
WordPress excels at presentation and publishing, but its content structure is relatively flat, struggling to express complex knowledge hierarchies and interconnections. Trilium Notes excels at deep knowledge organization but lacks an elegant public-facing presentation layer.
Trilium WP was built to bridge these two powerful systems. It connects to your Trilium Notes server via the ETAPI interface, bringing your carefully organized knowledge structures into WordPress intact — preserving Trilium’s depth of organization while leveraging WordPress’s superior presentation and sharing capabilities to create a synergy greater than the sum of its parts.
The core philosophy is “high-fidelity rendering” — faithfully preserving the structure, formatting, and relationships of your notes while blending them naturally into the WordPress interface. This fidelity goes beyond visual presentation; it conveys the integrity of the knowledge structure itself. Your knowledge system appears to readers exactly as you built it — no distortion, no oversimplification. This is the spirit of Terminus: preserving knowledge in its entirety, without compromise.
📌 Six shortcodes for flexible embedding:
Shortcode
Function
[trilium_note]
📄 Display a single note
[trilium_kb]
📚 Build a complete interactive knowledge base page
[trilium_search]
🔍 Embed Trilium search functionality
[trilium_browser]
🗂️ Browse the Trilium note tree
[trilium_related_notes]
🔗 Display related notes
[trilium_recent]
🕐 Show recently updated notes
📌 The knowledge base system is Trilium WP’s standout feature. It’s not a simple content collection — it’s an organic knowledge ecosystem that preserves hierarchical relationships and logical connections:
🌳 Split-pane navigation — The left navigation tree preserves the original hierarchy with dynamic expand/collapse, keeping even large knowledge bases with hundreds of nodes clean and manageable.
🧭 Breadcrumb trails — Users always know their exact position within the knowledge structure.
🃏 Child note cards — If the current note has child notes, they’re displayed as neatly arranged cards, inviting readers to explore deeper along knowledge threads.
📱 Responsive layout — Automatically reorganizes on mobile devices to maximize content display.
📌 The intelligent content rendering system supports up to 16 note types, including text notes (full Markdown support), code notes (professional syntax highlighting), image notes (secure proxy mechanism), relation maps, search notes, and more. Each content type has a dedicated processor for parsing and rendering.
📌 Trilium WP’s plugin ecosystem — a complete loop from viewing to editing to syncing:
Edit Trilium notes directly from the WordPress frontend — create, update, delete without switching back to the Trilium client. Rich text editing, double-click title editing, Ctrl+S quick save, 5-layer security stack
🔄 Trilium Post Sync
Bidirectional sync between Trilium notes and WordPress posts — KB notes auto-publish as posts; WordPress posts can be written back as Trilium notes. Supports scheduled auto-sync and manual sync
🌐 Trilium Multi-Instance
Connect a single WordPress site to multiple Trilium servers simultaneously, presenting and managing multiple knowledge sources. Built on a zero-intrusion architecture requiring only 4 filter hook patches (~20 lines of code)
From “viewing notes” to “editing notes” to “syncing notes” to “multi-source management,” Trilium WP forms a complete closed loop.
🤖 4.2 Trilium AI — Making AI the Brain of Your Knowledge Base
If Trilium WP is the bridge that brings knowledge from Trilium into WordPress, then Trilium AI is the intelligent brain installed on that bridge — enabling AI to search, understand, and analyze your personal knowledge base, and even execute complex multi-step workflows on your behalf.
In the Terminus metaphor, Trilium WP is the Encyclopedia itself, while Trilium AI is the scholar who can read, comprehend, and apply the Encyclopedia — it doesn’t just store knowledge; it thinks about knowledge.
Trilium AI consists of two core components:
💬 Trilium AI Chat (v5.1.1) — The foundation layer: an embedded, feature-rich AI chat window supporting multi-model switching (Google Gemini / OpenAI-compatible / Ollama local), real-time streaming output, web search, and Gutenberg Block workflow orchestration.
🤖 Trilium AI Agent (v3.0.0) — The enhancement layer: Agent capabilities including deep knowledge-base operations, automated workflows, multi-Agent management, and persistent long-term memory via OpenClaw.
Gutenberg Block workflow orchestration is the core reason for building an AI platform within the WordPress ecosystem. Each Block instance is an independent, customizable AI workflow node. Through a prompt variable system ({variable_name} placeholders), the system automatically generates input fields on the frontend. Users fill them in, the system assembles the complete prompt, and sends it to the AI. Multiple different workflows can coexist on the same WordPress page without interfering with each other — one for search, one for content generation, one for translation — just drag and drop to build a multi-function AI workbench. This isn’t slapping a chat window onto a web page — it’s gaining a no-code AI workflow orchestration platform.
The Agent’s most thrilling capability is letting AI truly see into your Trilium Notes knowledge base — searching notes, browsing directories, exporting content, and engaging in deep conversations grounded in your accumulated knowledge. The notes you’ve built up over years are no longer silent, static text in a database — they become living knowledge that AI can tap into at any moment.
📌 OpenClaw — The Soul of Trilium AI’s Agent: An emerging open-source AI Agent gateway purpose-built for running persistent, stateful AI Agents in a local environment. It gives Agents long-term memory (the AI remembers your preferences and style over time), daily logs (interaction highlights auto-archived), knowledge sync (Trilium notes synced to AI memory), and fully private deployment — OpenClaw + Ollama local models + local FileBrowser = a fully cloud-independent AI knowledge assistant system. All data, all inference, all memory runs on your own infrastructure — absolute data sovereignty.
🎵 4.3 Trilium Catalyst — A Multi-Source Content Ingestion Engine
There is far too much valuable knowledge in the world that is spoken aloud and then lost forever. Trilium Catalyst solves this problem: it receives audio files, YouTube videos, real-time voice recordings, and other forms of spoken content, automatically transcribes them to text, refines them with AI, and archives them to your Trilium Notes knowledge base with a single click.
If Trilium WP lets you display existing knowledge, and Trilium AI lets you think about knowledge, then Catalyst lets you capture knowledge scattered across the world — turning ephemeral sound into permanent written record. You can’t compile an Encyclopedia on Terminus without first collecting the source material.
Three content sources cover the major non-text knowledge scenarios: local audio transcription (supporting virtually all common audio formats, batch processing up to 10 files), real-time voice recording (built-in browser recorder with pause/resume and dual-mode output), and YouTube smart transcription (prioritizing subtitle extraction, automatically falling back to audio download + Whisper transcription when unavailable, with channel batch processing).
The AI refinement layer is Catalyst’s soul — raw speech-to-text output is littered with filler words, repetitions, typos, and fragmented sentences. AI automatically strips filler words, merges duplicates, corrects transcription errors, restructures into logically coherent paragraphs, and generates headings. Custom refinement prompts are supported, and any configured AI model can be selected.
📖 4.4 Calibre WP — A Bridge for Your E-Book Library
For anyone serious about knowledge work, books remain one of the most important sources of insight. Asimov’s Terminus Foundation was charged with compiling the Encyclopedia Galactica — and in the sovereign individual’s digital world, your e-book library is your “encyclopedia source archive.” What Calibre WP does is take that archive from closed to open, from static to intelligent.
Calibre WP connects to your Calibre-Web server via the OPDS (Open Publication Distribution System) protocol, seamlessly embedding your entire library into WordPress. The 7.x release involved the most thorough architectural rewrite: the entire reverse proxy layer was stripped away, and Calibre-Web was demoted from “proxied frontend” to “pure data source.” Online reading went from “every interaction requires a server round-trip” to “download the EPUB and read completely offline.”
Core capabilities include library browsing (search, pagination, multiple display modes), an online EPUB reader based on Foliate.js, an EPUB CFI precision bookmark system, Edge TTS neural voice reading, AI book review auto-generation (new book detection → AI generation → save to Trilium Notes), and an in-reading AI assistant (select a passage → ask AI → real-time answer → conversation auto-archived).
The AI book review generator and in-reading AI assistant break down the traditional divide between “reading” and “knowledge management” — the act of reading itself becomes an act of building your knowledge system. The SatoshiWP open-source research community is also watching emerging projects like Calibre-Web Automated (CWA) and Anx Calibre Manager — the latter even includes a standards-compliant MCP server, confirming the trend of “library management transitioning from human-operated data to AI Agent-operated data.”
📰 4.5 Miniflux WP — An RSS Information Pipeline
Miniflux WP is an all-in-one WordPress plugin built for Miniflux RSS reader users, transforming RSS content from a “read-and-forget” information stream into raw material that can be displayed, subscribed to, and deeply processed by AI.
In the information ecology of surveillance capitalism, algorithms decide what you see and what you don’t. RSS is a fundamental rebellion against this control — you choose your own sources, with no algorithm filtering in between. Miniflux WP goes further: it doesn’t just let you choose what to read, but also enlists AI to deeply digest that information and archive the highlights to your knowledge base.
Three modules work in concert: the RSS digest engine (AI auto-generates topical briefings, runs on schedule, manages multiple independent tasks, auto-saves to Trilium), content display (Gutenberg visual configuration, 4 layout modes, auto-refresh), and quick subscribe (YouTube channel / Twitter account / generic RSS smart detection, batch subscription).
You can create multiple independent digest tasks: a tech weekly, an English news daily, a research monthly, a one-off deep-dive analysis — each with its own configuration, scheduling strategy, and execution history. Information subscription → AI digestion → knowledge archiving — this fully automated pipeline transforms you from a “victim of information overload” into a “sovereign information manager.”
💾 4.6 NextCloud WP — Private Cloud File Bridge
NextCloud WP establishes a high-speed WebDAV channel between your WordPress site and your Nextcloud private cloud — browse, upload, download, share, and sync every file on Nextcloud, all without ever leaving the WordPress backend.
Core capabilities include: a real-time file browser (WebDAV PROPFIND + breadcrumb navigation, embeddable on any page via the [nextcloud] shortcode), a robust upload engine (direct upload for small files + automatic chunked upload for large files + real-time progress bar), a secure download proxy (Nextcloud credentials are never exposed to the client), one-click public sharing (OCS API), and a directory sync engine (incremental sync from WordPress to Nextcloud — add only, never delete).
A design highlight: zero external dependencies — no Composer, no SDK, no frontend framework. Pure PHP + vanilla JavaScript. In the sovereign individual’s system, Nextcloud is “an extension of your hard drive,” and NextCloud WP lets this “extended hard drive” be operated directly within WordPress — your files and your content live in the same interface.
🎬 4.7 Stremio WP — A Streaming Media Management Workbench
Stremio WP is built specifically for self-hosted Stremio users, letting you monitor all active torrent downloads in real time from WordPress, launch playback in VLC/IINA with a single click, and even push completed files directly to your Nextcloud private cloud.
Three capability layers: real-time monitoring (configurable polling intervals, intelligent metadata completion), one-click playback (VLC custom protocol bridge + IINA out of the box), and Nextcloud push (zero-disk streaming — files flow in 10MB chunks directly from EngineFS to Nextcloud; WordPress acts only as the conduit, using zero disk space; database-level atomic locks prevent duplicate pushes).
🌓 4.8 TT5 Dark Mode — The Perfect Companion for Twenty Twenty-Five
TT5 Dark Mode fills in features missing from WordPress’s Twenty Twenty-Five theme: light/dark mode toggle (cookie persistence, zero FOUC, 4 official color palettes), a global focus system, shadow preset fixes, link hover configuration, and two Gutenberg Blocks. Under 8KB total, no build step, no external dependencies, fully compliant with WordPress coding standards.
A good tool should be like air — you don’t notice it’s there, but you can’t breathe without it. TT5 Dark Mode is exactly that.
V. From Plugins to Ecosystem: A Complete Sovereign Digital Life
When we assemble all of SatoshiWP’s plugins together, a picture of a complete sovereign digital life comes into focus. Here’s what a typical workday might look like:
☀️ Morning
├── Miniflux WP ran automatically at dawn → AI-generated tech weekly is waiting in Trilium Notes
├── Open WordPress → browse the latest RSS content displayed by Miniflux WP
└── Spot a YouTube channel worth following → Quick Subscribe panel, one click to add
📚 Late Morning: Reading & Learning
├── Open Calibre WP's online reader → pick up where you left off yesterday
├── Come across a brilliant passage → select text → ask AI → conversation auto-archived to Trilium Notes
├── Discover a 2-hour YouTube tech talk → Trilium Catalyst one-click transcription
└── AI refines → archives to Trilium → instantly searchable
🤖 Afternoon: AI Collaboration
├── Open Trilium AI Chat, select Gemini 2.5 Pro → discuss today's reading
├── AI Agent searches related historical notes → synthesizes analysis → generates research report
├── Use the Gutenberg Block workflow → translate the report into another language
└── OpenClaw remembers today's research topic → auto-links context in the next session
💾 Evening: Organizing & Archiving
├── NextCloud WP → sync today's work files to Nextcloud private cloud
├── Stremio WP → monitor download progress → push completed files to Nextcloud
├── Trilium WP knowledge base → browse all notes added today
└── All data lives on your own devices → sleep well
In this scenario, you never left the WordPress interface. You never entrusted critical data to a third party. Your knowledge base is growing. Your AI assistant is learning more about you. Your files are safely stored on your own Nextcloud.
This is daily life on Terminus — not an ascetic techno-monk’s ritual, but an organized, AI-enhanced, fully autonomous digital lifestyle. It’s not a distant ideal; it’s a tech stack you can run right now.
VI. The Bigger Picture: From localhost to HomeLab
If localhost + WordPress + SatoshiWP represents the software layer of the sovereign individual, then the HomeLab (home laboratory) extends this philosophy to the hardware layer.
The core idea is straightforward: gradually migrating the digital infrastructure you currently depend on cloud services for back into your own physical control. A typical HomeLab architecture built around the SatoshiWP ecosystem might look like this:
In this system, WordPress is no longer just one among many self-hosted services — it is the unified portal and operating interface for all of them. Each SatoshiWP plugin acts as a “bridge,” connecting independently running open-source services to the WordPress hub. You always face a single browser tab, a single authentication system, a single consistent user experience.
Even beyond privacy, HomeLab is about digital literacy and technological self-determination. The skills you acquire — networking, containerization, security — compound over time and pay dividends across every aspect of your digital life.
In the language of Foundation: the HomeLab is the process of your Terminus growing from a bare-bones colony into a fully functional city. The city has a library (Calibre-Web), an archive (Trilium Notes), a communications center (Miniflux), a warehouse (Nextcloud), a think tank (Ollama + OpenClaw) — and there is only one city hall: WordPress.
VII. Self-Hosting in the Age of Data Breaches
There is yet another inescapable reason we emphasize building your own digital infrastructure on localhost and HomeLab: data breaches.
The reality is undeniable: your data security is only as strong as the weakest link among all the services you use.
This is not an abstract risk — it’s happening right now. Consider a few eye-opening cases from 2025–2026:
Conduent (US) — Disclosed a ransomware attack in April 2025 that exfiltrated over 8TB of data. By February 2026, the estimated number of affected individuals had ballooned from nearly 4 million to over 25.9 million, with exposed data including Social Security numbers and medical records.
PayPal — Confirmed a breach of its lending system in which attackers accessed systems starting July 1, 2025, but weren’t discovered until December 12, 2025 — a dwell time of over five months.
Odido (Dutch telecom) — Disclosed a cyberattack in February 2026 affecting up to 6.2 million customers, with leaked data including names, addresses, bank accounts, and passport information.
China — In March 2025 alone, 50.16 million intelligence records were detected across anonymous social channels, covering loan information, hotel guest records, vehicle owner data, bank customer data, and more.
According to the 2026 Thales Data Threat Report, 63% of respondents ranked nation-state actors among their top three threats. The Identity Theft Resource Center reported 1,732 publicly disclosed data breaches in the first half of 2025, a 5% increase over the same period in 2024.
When you entrust your data to cloud services, you are effectively paying for the mistakes of every operations engineer you’ve never met, every security vulnerability you can’t see, and every corporate decision you have no control over — all with your own privacy. When you keep critical data local, you at least bring the security responsibility back into your own hands — you get to choose the encryption scheme, the access policy, and the backup frequency.
Security-minded design principles run throughout the SatoshiWP ecosystem:
🔐 Trilium AI — All operations require authenticated sessions; streaming responses use independently encrypted tokens that auto-rotate hourly; OpenClaw uses device-identity cryptographic authentication
🔐 Calibre WP — All EPUB endpoints use book-level nonces; cover images are served through a secure proxy; download proxy includes HEAD pre-check (100MB limit) and 8KB chunked streaming
This isn’t to say self-hosting is inherently more secure than cloud services (in fact, professional cloud security teams may possess resources no individual can match). The point is: when something goes wrong with security, would you rather it be the consequence of your own decisions, or the result of a black box you have absolutely no control over?
Sovereignty, in the end, is about the right to choose.
VIII. Trilium Notes Ecosystem: Keeping a Finger on the Upstream Pulse
As the upstream project underpinning several of SatoshiWP’s core plugins, the evolution of the Trilium Notes ecosystem directly shapes the trajectory of the entire WordPress knowledge-management stack. Understanding Trilium’s latest developments helps us see where SatoshiWP is headed.
📌 Key Timeline:
Date
Milestone
December 2017
Zadam publicly releases Trilium Notes for the first time, opening a new chapter in open-source knowledge management
January 2024
Zadam announces Trilium Notes is entering maintenance mode; the TriliumNext community fork launches the same month
2025
Zadam formally transfers the original repository to the TriliumNext team; the community releases an MCP server enabling AI assistants to directly read and write notes
December 2025
v0.101.0 released — a comprehensive UI modernization
January 2026
v0.101.3 released — brand returns to “Trilium Notes,” introduces the Trilium.Rocks default theme, patches CVE-2025-58754
📌 Ecosystem Highlights:
🔐 Local-first — All data stored on the user’s own device, with support for end-to-end encryption (per-note AES encryption)
🧬 Note cloning — A single note can appear under multiple parent nodes while staying in sync — true “one note, many references”
⏳ Version history — Every note automatically maintains a version history, viewable and restorable at any time
🛠️ Scripting — Each note can contain JavaScript code that manipulates other notes, with full Node.js API access
🤖 AI integration — The MCP server lets AI assistants interact directly with the knowledge base; SatoshiWP’s Trilium AI plugin is an outstanding implementation in this direction
The arc of Trilium Notes is itself a microcosm of the open-source world’s vitality: a personal project (Zadam) → announcement of end-of-maintenance → community takes the baton (TriliumNext) → a thriving ecosystem (SatoshiWP plugins, MCP server, AI integration). No single company’s bankruptcy can kill a truly open-source project — and this is the fundamental reason the sovereign individual chooses an open-source stack. Knowledge and tools belong to the community, not to a line item on a corporation’s balance sheet.
IX. Conclusion: Everyone Is a Terminus
Buried inside every computer is a treasure called localhost — a relic of the digital world’s original promise: self-governance.
By installing WordPress locally, the sovereign individual is not merely building a website — they are practicing how to survive independently in this digital wilderness.
And SatoshiWP elevates that practice to an entirely new dimension. It proves an exhilarating possibility: WordPress is far more than a blogging platform — when bridged through plugins to Trilium Notes, Calibre-Web, Miniflux, Nextcloud, Stremio, Ollama, and other self-hosted services, it becomes the sovereign individual’s digital operating system. Knowledge management, AI assistants, e-book reading, information subscriptions, file storage, streaming media management — all under your own control.
The decentralized internet driven by sovereign individuals is only just beginning. This is the inherent logic of the digital economy’s evolution. Linux and WordPress are the vanguard of this trend, and blockchain will be its successor.
In Asimov’s Foundation, Hari Seldon chose the most remote planet in the galaxy not because it was the most powerful, but because it was the most free. A group of seemingly insignificant scholars, beyond the Empire’s gaze, quietly preserved the seeds of civilization. Three hundred years later, when weeds had overgrown the Empire’s ruins, the Foundation on Terminus had grown into the most vibrant civilizational force in the galaxy.
Seldon’s insight was this: true power lies not in clinging to the imperial center, but in building your own foundation at the edge.
Today, every one of us who runslocalhostis a small Terminus. We don’t need to depend on any digital empire — we don’t need to host our thoughts on someone else’s servers, hand our memories to someone else’s algorithms, or trap our creativity in someone else’s terms of service. We run our own services on our own devices, accumulate our own wisdom in our own knowledge bases, and augment our own thinking with our own AI assistants.
Perhaps one day, we’ll no longer need to depend on any mega-platform, because each of us, in ourselves, will be an independently running, always-online server node — a small universe of one. And the first step requires no investment, no application, no one’s approval — just open your computer and type into the browser’s address bar: localhost.
Welcome to your Terminus.
📚 Further Reading
The following resources can help you dig deeper into the core concepts and hands-on skills covered in this article:
TT5 Dark Mode is a Gutenberg-native plugin that adds dark/light mode switching, focus fixes, shadow presets, and link hover customization to WordPress’s default theme.
Twenty Twenty-Five is one of the most refined default themes WordPress has ever shipped. Its style variation system, fluid typography, and minimal footprint make it an excellent foundation for a wide range of websites.
But after building several production sites on TT5, I kept running into the same four friction points — issues that couldn’t be solved with Additional CSS alone and that no existing plugin addressed as a cohesive package.
TT5 Dark Mode was born from that frustration. It’s a single, focused plugin that fills the gaps TT5 left behind.
🔍 The Four Problems This Plugin Solves
Before diving into features, let’s be specific about what’s actually missing in Twenty Twenty-Five and why each gap matters.
Problem 1 — No dark mode toggle for visitors.
TT5 includes gorgeous dark palettes (Evening, Twilight, Midnight, Sunrise) as style variations, but these are design-time choices made by the site owner. Visitors have no way to switch between dark and light mode on the frontend. In 2025, dark mode isn’t a luxury — it’s a baseline accessibility and comfort expectation.
Problem 2 — Crude focus outlines.
TT5 applies a global :focus rule to all interactive elements with no color customization, no outline offset, and — critically — no :focus-visible distinction. This means every mouse click on a button or link triggers a visible outline ring, which is visually distracting for mouse users and violates the modern UX standard where outlines should only appear during keyboard navigation.
Problem 3 — Broken shadow reference in the Noon variation.
TT5’s “Noon” style variation references var:preset|shadow|natural in its theme.json, but never actually defines the preset. The result: any block that relies on this shadow token (buttons, cards) renders with no shadow at all. This is a confirmed upstream bug.
Problem 4 — Minimal link hover feedback.
When a visitor hovers over a link in TT5, the only visual change is the underline switching from solid to dotted. There’s no color shift, no transition animation, and no way to customize this behavior through the Site Editor. For sites that depend on clear visual affordances, this is insufficient.
TT5 Dark Mode solves all four problems through a single tabbed settings panel and two Gutenberg blocks, with zero external dependencies and under 8 KB of total code.
⚡ Quick Start — Up and Running in 3 Minutes
Getting the plugin working requires exactly four steps. No build tools, no configuration files, no terminal commands.
Step 1 — Install the plugin.
Upload tt5-dark-mode.zip via Plugins → Add New → Upload Plugin, or extract the tt5-dark-mode folder into /wp-content/plugins/ manually.
Step 2 — Activate.
Go to Plugins → Installed Plugins and click Activate next to “TT5 Dark Mode.”
💡 If your active theme is not Twenty Twenty-Five (or a child theme of TT5), the plugin will display a notice and gracefully disable all its frontend features. It will not break your site.
Step 3 — Configure settings.
Navigate to Settings → TT5 Dark Mode. The settings page is organized into five tabs:
For most sites, the default settings work immediately — you only need to choose a dark palette and optionally enable Auto mode. Everything else is fine-tuning.
Step 4 — Place the toggle block.
Open the Site Editor (Appearance → Editor), navigate to your header template, and insert the Dark Mode Toggle block. Choose your preferred variant — pill, icon-only, or switch — and save.
That’s it. Your visitors can now switch between dark and light mode, and their preference persists via a cookie.
🌙 Feature Deep Dive: Dark / Light Mode Switching
This is the plugin’s flagship feature, and it’s designed to handle every edge case correctly.
How the toggle works
The toggle button cycles between states:
Default (two-state): Dark ↔ Light
With Auto enabled (three-state): Auto → Dark → Light → Auto
In Auto mode, the plugin respects the visitor’s operating system preference via the prefers-color-scheme media query. If the visitor’s OS switches from light to dark (e.g., at sunset with scheduled dark mode), the site updates in real time — no page reload required.
How palettes are applied
Under the hood, the plugin doesn’t repaint the page or swap stylesheets. Instead, it overrides TT5’s CSS custom properties:
Because every TT5 block references these variables, the entire page — headers, footers, buttons, text, backgrounds — adapts automatically when the mode changes. No per-block styling is needed.
The four available dark palettes
All palettes are sourced directly from TT5’s official style variations, ensuring visual consistency:
Palette
Base
Contrast
Character
🌆 Evening
#1B1B1B
#F0F0F0
Warm, muted — the safe default
🌃 Twilight
#131313
#FFFFFF
High contrast with blue/coral accents
🌌 Midnight
#4433A6
#79F3B1
Bold purple with neon green — distinctive
🌅 Sunrise
#330616
#FFFFFF
Deep burgundy with warm yellow tones
Smart inversion for dark-based style variations
Here’s a nuance most dark mode plugins get wrong: what happens when the site’s default style is already dark?
TT5 Dark Mode detects the base color luminance of the active style variation using the WCAG 2.1 relative luminance formula. If the base color is dark (luminance < 0.4), the plugin automatically inverts its entire logic:
The toggle button label changes from “Dark mode” to “Light mode”
The “alternate” palette becomes the default TT5 light palette
Cookie values and CSS classes still work identically
This means if you’re using TT5’s “Evening” style variation as your default, the plugin gives your visitors a light mode switch — not a redundant dark mode one.
📌 This detection happens server-side and is cached with a static variable, so there’s zero performance overhead.
Zero FOUC (Flash of Unstyled Content)
The most common complaint with JavaScript-based dark mode solutions is the “flash” — the page briefly renders in light mode before JavaScript kicks in and switches to dark.
TT5 Dark Mode eliminates this entirely with a synchronous inline script injected at wp_head priority 1 (before any stylesheets load):
The script reads the tt5dm_pref cookie
It checks prefers-color-scheme if needed
It adds tt5-dark-mode or tt5-light-mode to <html> immediately
The CSS that overrides the palette variables is scoped to these classes
Because the class is set before the browser’s first paint, there is literally no frame where the wrong palette is visible.
🧱 Feature Deep Dive: Gutenberg Blocks
The plugin registers two blocks, both fully Gutenberg-native — no shortcodes, no widgets, no legacy code.
Dark Mode Toggle Block
Where to use it: Header template, sidebar, footer, or any page/post content.
Three variants:
Variant
Appearance
Best for
🔘 Pill
Rounded capsule button with text label
Headers with space for text
🎯 Icon-only
Circular button with sun/moon icon
Compact headers, mobile-first layouts
🎚️ Switch
iOS-style toggle with sliding thumb
Settings panels, preference sections
All three variants support full block styling: custom colors, spacing, typography, border radius, and alignment. The block integrates with WordPress’s native block controls — no custom sidebar panels.
What the block renders on the frontend:
A single <button> element with:
role="switch" and aria-checked for screen reader compatibility
aria-label that dynamically reflects the current state
SVG icons embedded inline (no icon font dependency)
The button is the block root — no wrapper <div>, which means useBlockProps alignment works natively
Mode-Aware Content Block
This is the less obvious but equally powerful block. It’s a container that conditionally shows its children based on the current mode.
Use cases:
🖼️ Show a dark-background hero image in dark mode and a light-background one in light mode
📝 Display different welcome messages per mode
🎨 Swap logos (dark logo on light backgrounds, light logo on dark backgrounds)
How it works:
The visibility is controlled entirely with CSS — no JavaScript on the frontend. The block renders a <div> with a data-mode="dark" or data-mode="light" attribute, and the stylesheet uses these rules:
This means mode-aware content works instantly on page load (no JS delay) and is fully compatible with caching plugins.
Block Patterns
The plugin includes three ready-to-use patterns to get you started:
📐 Header with Toggle — A navigation row with the toggle placed in the right column
🎨 Mode-Aware Hero Section — Two stacked hero sections, one visible per mode
🖼️ Mode-Aware Logo — A pair of image blocks for light/dark logo variants
Access these via the Block Inserter → Patterns → TT5 Dark Mode category in the Site Editor.
🎯 Feature Deep Dive: Focus & Outline System
This feature alone justifies installing the plugin, even if you don’t need dark mode.
What’s wrong with TT5’s default focus
TT5 applies this rule globally:
:where(.wp-site-blocks) *:focus {
outline: ...;
}
The problems:
❌ Uses :focus instead of :focus-visible, so mouse clicks trigger outlines
❌ No customizable outline color (defaults to browser UA style)
❌ No outline offset (the ring hugs the element edge)
❌ Same behavior for all element types (buttons, inputs, nav links)
❌ No dark/light mode differentiation
What TT5 Dark Mode provides
The plugin replaces this with a layered focus system:
Global level — Applies to all interactive elements within .wp-site-blocks:
Setting
Options
Default
Focus Mode
:focus-visible / :focus / disabled
:focus-visible
Outline Color
Any CSS color
Theme accent-4
Outline Width
1–5 px
2px
Outline Style
solid / dashed / dotted
solid
Outline Offset
0–10 px
2px
Element level — Override the global settings for specific element types:
🔘 Buttons — Custom outline color and offset
📝 Form inputs — Custom outline color + optional box-shadow ring (the common “glow” pattern used by most design systems)
🧭 Navigation links — Custom outline offset (TT5 uses different offsets for parent items vs. submenus)
Dark mode level — Use a different outline color when dark mode is active. This is critical because a dark blue outline that’s visible on white backgrounds becomes invisible on dark backgrounds.
💡 Tip: When using the :focus-visible mode (recommended), the plugin also adds :focus:not(:focus-visible) { outline: none !important; } to ensure mouse clicks produce absolutely no outline artifact. This is the behavior that Chrome, Firefox, and Safari all default to in their native UI.
🎨 Feature Deep Dive: Box Shadow Presets
The Noon variation bug
TT5’s “Noon” style variation includes this in its theme.json:
"shadow": "var:preset|shadow|natural"
But the natural shadow preset is never defined anywhere in TT5’s theme files. The result: buttons and blocks that reference this token render with box-shadow: none.
How the plugin fixes it
TT5 Dark Mode injects three shadow presets into the theme.json data using WordPress’s wp_theme_json_data_theme filter:
All three values are editable in the settings panel with a live preview box that updates as you type. They also appear in the Gutenberg Shadow picker for any block that supports box-shadow.
Dark mode shadow adjustment
Standard shadows — dark shapes on a dark background — are nearly invisible. The plugin provides three strategies:
Inherit — Same shadows in both modes (default)
Darken — Increases shadow opacity for better definition on dark backgrounds
Glow — Replaces dark shadows with subtle white light halos
🔗 Feature Deep Dive: Link & Hover Customization
TT5’s default link hover behavior is a single CSS change: the underline style switches from solid to dotted. There’s no color shift and no animation.
The plugin adds four controls:
Setting
What it does
Default
Hover Color
Changes link text color on hover
none (inherits)
Underline Style
solid / dashed / dotted / none on hover
theme default (dotted)
Transition Duration
Smooth animation between states (0–1000 ms)
0 ms
Button Hover Opacity
Controls color-mix() percentage for .wp-block-button__link:hover
85% (theme default)
💡 Recommended starting point: Set hover color to your accent color, underline to solid, and transition to 200ms. This provides clear, polished hover feedback without being distracting.
⚙️ Feature Deep Dive: Advanced Tab
Custom CSS
The Advanced tab includes a code editor for injecting arbitrary CSS. This CSS loads after all plugin-generated styles, so it can override anything.
The key selectors you’ll use most often:
/* Target dark mode only */
html.tt5-dark-mode .my-element {
background: #1a1a2e;
}
/* Target light mode only */
html.tt5-light-mode .my-element {
background: #fafafa;
}
/* Target the moment before JS initializes (edge case) */
html:not(.tt5-dark-mode):not(.tt5-light-mode) .my-element {
/* Shown only if cookie and JS both fail */
}
Legacy Toggle Focus (backward compatibility)
If you were using an earlier development version of this plugin, toggle-specific focus settings are preserved here. For new installations, the global Focus & Outline system (Tab 2) is the recommended approach.
🧩 For Theme Developers
Available filter
// Modify the dark palette before CSS is generated
add_filter( 'tt5dm_dark_palette', function( $palette, $key ) {
// $key is 'evening', 'twilight', 'midnight', or 'sunrise'
if ( 'evening' === $key ) {
$palette['colors']['accent-1'] = '#FF6600';
}
return $palette;
}, 10, 2 );
CSS custom properties
The plugin exposes two sets of custom properties:
Global focus properties — set by the Focus & Outline tab:
Both can be overridden in your child theme’s style.css or via the Additional CSS panel in the Customizer.
JavaScript API
The plugin exposes a global state manager on window.__tt5dm:
window.__tt5dm.getPref() // → 'auto' | 'dark' | 'light'
window.__tt5dm.isDark() // → boolean
window.__tt5dm.cycle() // Advance to next state
window.__tt5dm.apply('dark') // Force a specific state
// Listen for mode changes
document.addEventListener('tt5dm:change', (e) => {
console.log(e.detail.pref, e.detail.isDark);
});
❓ Frequently Asked Questions
Does this work with themes other than Twenty Twenty-Five?
No. The plugin checks wp_get_theme()->get_template() on every page load and disables all features if the template is not twentytwentyfive. It will not break other themes — it simply does nothing.
Is the cookie GDPR-compliant?
The plugin stores a single functional cookie (tt5dm_pref) that records the visitor’s display preference. Under GDPR and ePrivacy Directive guidance, functional cookies that serve accessibility or preference purposes are generally exempt from consent requirements. That said, if your privacy policy lists all cookies, you should include this one.
Does it work with caching plugins?
Yes. The dark/light mode switching is handled entirely on the client side (cookie + inline script + CSS classes). The server delivers the same HTML regardless of the visitor’s mode preference, so full-page caching works without any special configuration.
What happens if JavaScript is disabled?
The site renders in its default style (whatever the active style variation is). The toggle block renders as a <button> element but has no click handler. The inline <head> script also won’t run, so no CSS class is added to <html>. The page is fully functional — just without the ability to switch modes.
Can I use this with WooCommerce?
Yes, as long as WooCommerce is running on a TT5-based theme. WooCommerce blocks inherit TT5’s CSS custom properties, so they’ll adapt to dark/light mode automatically. Custom WooCommerce templates that hardcode colors may need additional CSS via the Advanced tab.
How lightweight is this plugin?
📦 Total file size: under 8 KB (all PHP, JS, and CSS combined)
🔌 Zero external dependencies (no jQuery, no frameworks)
📡 Zero extra HTTP requests for styles (all CSS is inline)
🧠 No database queries beyond a single get_option() call per page load
WordPress.org:(link to plugin page after approval)
License: GPLv2 or later
TT5 Dark Mode is free, open-source, and built for the community. If you find a bug or have a feature request, please open an issue on GitHub. Pull requests are welcome.