EpixNet lets you visit and build websites that live on people's own computers instead of on a big company's servers.
When you open an EpixNet site, your computer downloads content and can share it with other peers. More available copies can improve access, but speed and availability depend on reachable peers, bandwidth, and the content they retain.
EpixNet supports Tor and I2P in builds that include those features. Routing depends on the build and your settings: enabling Tor does not send every connection through Tor. Direct peers and services can see your IP address, and destinations may record requests. These features do not guarantee anonymity.
- Peer-hosted websites. Sites (EpixNet calls them xites) use signed content and peer replication. A copy must remain available locally or from a reachable peer to load it. A valid signature does not establish that content is safe or lawful.
- Routing choices. Supported builds include embedded Tor and I2P. The default Tor
enablemode supports onion peers while allowing other peer connections to go directly. Browser traffic has separate routing controls. Check your platform's settings before relying on a route. - You help hold it up. Your node shares the xites you have visited and helps other people find each other, like a tiny piece of the network living on your machine.
- A dashboard. See the xites you keep, live network activity, and a world map of the people you are connected to.
- Network applications. Discover a chat board, mail, and a newsfeed. Identity or wallet requirements depend on the application and the action you take.
- Desktop and mobile projects. Source and build guides are available for Windows, macOS, Linux, Android, and iOS. Features and distribution availability vary by platform; mobile store releases are in preparation.
EpixNet is built from its source code. Pick your system below. Each guide starts from a brand new machine with nothing installed yet and walks you through every step.
Once it is built, there are three ways to start it:
# 1. The full desktop app: opens a managed Firefox that understands .epix names,
# so typing dashboard.epix or talk.epix just works.
cargo run -p epix-browser
# 2. Just the node, no Firefox wrapper: it opens the dashboard in your normal
# browser. Good if you already have a browser you like.
cargo run -p epix-server
# 3. Headless, for a server or seedbox with no screen: serve the network but
# do not open any browser. Then visit the dashboard yourself.
EPIX_HEADLESS=1 cargo run -p epix-serverThe dashboard uses http://127.0.0.1:42222/ by default. If that port is taken, it tries 42223, 42224, and so on until one is available. Open a specific xite by passing its name:
cargo run -p epix-server talk.epixepix-browser embeds the Epix Wallet build pinned by shells/wallet-ext.rev
(an epix-wallet commit on its epix branch). build.rs downloads that build's
immutable wallet-<rev> release when the staged copy is missing or does not
match the pin, so a given EpixNet commit always embeds the same wallet. When the
staged copy already matches the pin, the build reuses it with no network access.
To adopt a newer wallet, bump the pin to the new epix-wallet commit and open a PR:
echo <epix-wallet-commit> > shells/wallet-ext.rev # 12-char short SHA
cargo build --release -p epix-browser # re-fetches the pinned buildTo test local, unpushed wallet changes, point the build at your wallet
checkout with EPIX_WALLET_DIST (it re-copies whenever your build changes, and
overrides the pin):
# 1. build the wallet (in your epix-wallet checkout)
cd ../epix-wallet
yarn install && yarn workspace @keplr-wallet/extension build # yarn install only needed if deps changed
# 2. rebuild the browser against your build
cd ../EpixNet
EPIX_WALLET_DIST=../epix-wallet/apps/extension/build/firefox cargo run --release -p epix-browserTo go back to the pinned wallet, build without the env var; build.rs re-fetches
the pinned wallet-<rev> release:
cargo build --release -p epix-browserNew and re-signed xites include editable metadata fields in content.json.
See the content.json authoring reference for titles,
favicons, background colors, and file patterns.
To discard unsigned edits, open your xite's file browser at
http://127.0.0.1:42222/list/<address>/, choose Revert beside the file,
and confirm. This restores the version recorded in the signed content.json
from a verified local copy or a reachable peer. It keeps your edited file
until a verified replacement is available. Revert is available for files
declared in xites you own; it cannot undo changes that have already been signed
or restore content.json itself.
The same binary doubles as the authoring and diagnostics CLI, with the action name as the first argument (the EpixNet CLI shape):
epix-server siteCreate # new xite: address + private key
epix-server siteSign <address> [privatekey] # re-sign after editing files
epix-server siteVerify <address> # check files against the signed content.json
epix-server dbRebuild <address> # rebuild the xite's sql cache
epix-server dbQuery <address> "<sql>" # query the xite db, JSON out
epix-server importBundle <bundle.zip> # import xites from a zip
epix-server cryptSign <message> <privatekey>
epix-server cryptVerify <message> <sign> <address>
epix-server cryptGetPrivatekey <master_seed> [index]
epix-server cryptPrivatekeyToAddress <privatekey>
epix-server peerPing <ip> <port> # wire-protocol ping
epix-server peerGetFile <ip> <port> <site> <inner_path>
epix-server peerCmd <ip> <port> <cmd> '<json params>'The authoring actions work against the data dir directly (no running
node needed). siteSign uses the key saved at siteCreate when you
don't pass one. Anything that is not an action name is treated as a
xite to open, as before.
Set these before you start EpixNet to change how it runs:
| Setting | What it does | Default |
|---|---|---|
EPIX_HEADLESS=1 |
Serve the network but never open a browser (for servers). | off |
EPIX_UI_ADDR |
The address the dashboard listens on. | 127.0.0.1:42222 |
EPIX_TOR |
Node Tor mode: enable, disable, or always. always requires Tor for node peer traffic; browser and wallet routing have separate controls. |
enable |
EPIX_DATA_DIR |
Where EpixNet keeps its data (xites, keys, settings). | see below |
If dashboard port 42222 is already taken, EpixNet tries each next port in order until one is available. A non-default port set through EPIX_UI_ADDR must be available or startup fails. The selected dashboard port is saved in ui_port inside your data folder.
The file server also tries each next port if its configured fileserver_port is taken, starting at 26552 by default. Setting fileserver_port to 0 still disables seeding. Use the selected file-server port from the node log for port forwarding.
Your data folder by default:
- Windows:
%APPDATA%\EpixNet - macOS:
~/Library/Application Support/EpixNet - Linux:
~/.local/share/EpixNet(or$XDG_DATA_HOME/EpixNet)
Open the dashboard, then Settings. It shows the version and the exact code the build was made from, for example 0.3.0 (rev1a2b3c4). You can match that rev against the commits in this repository to confirm what you are running.
EpixNet is a set of small Rust pieces (in crates/) that fit together:
epix-serveris the node you run on a desktop.epix-browserwraps a real Firefox so.epixnames load like normal web pages.epix-ffiis the same node packaged for Android and iOS.- The rest handle the network, signing and verifying xites, storage, Tor, I2P, and the dashboard.
Contributor notes for the phone and Firefox shells live in shells/README.md.