A decentralized network of NEAR validator nodes organized by geography. Every city, state, and country can run its own validator pool — stake NEAR to keep your city's node online.
A City Node is a NEAR Protocol validator node tied to a real place — a city, state, or country. Each node has its own subdomain (e.g. chicago.citynode.app), its own NEAR treasury account, and one or more validator pools that anyone can stake to.
Nodes form a geography tree:
- A country node (e.g. USA, Malaysia) sits at the top
- A state node (e.g. Illinois) sits under its country
- A city node (e.g. Chicago, NYC) sits under its state
A node's subtree is itself plus all its descendants. A country page aggregates every validator in its subtree, so stakers can drill from country → state → city.
Each node can run 0..N validators. A validator is a staking target on NEAR with:
- an
account_id— the NEAR pool account you stake to - a
protocol— today: NEAR; extensible to other chains - a
role—official(run by the node's org) orcommunity(run by a local operator) - an
is_defaultflag — the pre-selected validator when you land on a node's stake page
A node with no validators of its own inherits from its parent chain. Kuala Lumpur can stake to Malaysia's validator; a brand-new city with no validator yet can stake to its state's or country's.
- Pick a place — start at the directory and drill into a country, state, or city.
- Open the node's stake page (e.g.
chicago.citynode.app/stake). - Sign in with your NEAR wallet.
- Choose a validator (official or community) and stake NEAR.
Staking helps keep that place's validator online and securing the NEAR network.
Want to set up a node for your city, state, or country? Apply to run a City Node.
City Nodes runs on everything.dev — a Module Federation runtime platform with oRPC contracts, Better-Auth + NEAR SIWN, and an every-plugin API. A fork of this framework exists within this repository, so feel free to make changes to it.
The Railway template deploys the everything.dev Docker image. You'll need to provide:
| Variable | Description | Example |
|---|---|---|
BOS_ACCOUNT |
The NEAR account that owns this app's published configuration on-chain — it signs bos publish transactions and namespaces the FastKV registry |
myapp.near |
BOS_GATEWAY |
The core domain where this app is served — combined with BOS_ACCOUNT, it forms the registry lookup path bos://<account>/<gateway> |
myapp.com |
BETTER_AUTH_SECRET |
Secret used for session encryption and key derivation — generate with openssl rand -base64 32 |
(random) |
MIT
