Server geolocates each egg by IP on first contact (ip-api.com), snaps coordinates to the nearest 1-degree grid (~111 km) and adds a small deterministic per-egg jitter so eggs in the same cell don't overlap. Only country + rounded lat/lon are stored; exact IPs are never saved. Front-end uses Leaflet with CartoDB dark tiles. Markers update on every poll cycle and are coloured to match the current coherence index. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Global Consciousness Project — Self-Hosted
A live network-variance tracker inspired by the Global Consciousness Project. Distributed "egg" containers contribute random numbers; the server runs statistical analysis and displays a colored dot.
Architecture
Egg containers (anyone can run)
│ POST /api/data (one 200-bit trial per second)
▼
Server (FastAPI + SQLite)
│ runs Stouffer Z network variance analysis every 60 s
▼
Website → animated dot + history chart + embeddable iframe
Quick start — run the server
git clone <this-repo>
cd gcp
docker compose up -d
The site is now at http://localhost:8000.
To expose it publicly, put it behind a reverse proxy (nginx, Caddy) or deploy to any VPS / cloud service.
Contribute an egg
Anyone can run an egg — one Docker command:
docker run -d --restart unless-stopped \
-e SERVER_URL=https://your-domain.com \
-v gcp_egg_data:/data \
git.hexadual.io/rocobo/gcp-dot-egg:latest
The egg:
- Reads 200-bit trials from the OS hardware-entropy pool (
os.urandom) once per second - Sends the trial count (0–200) to the server
- Persists its ID across restarts via
/data/egg_id
Images (built automatically by Gitea Actions)
Every push to main builds and publishes both images to the Gitea container registry:
| Image | Pull command |
|---|---|
| Server | docker pull git.hexadual.io/rocobo/gcp-dot-server:latest |
| Egg | docker pull git.hexadual.io/rocobo/gcp-dot-egg:latest |
How the analysis works
Every 60 seconds the server analyses the past hour of data:
-
Normalise each trial to a Z-score:
z = (trial − 100) / √50(expected mean = 100, variance = 50 for Binomial(200, 0.5)) -
Stouffer Z per second across all active eggs:
S_t = Σzᵢₜ / √N -
Network variance:
V = Σ S_t²— follows χ²(T) under H₀ -
Index = lower-tail CDF × 100:
- High index (> 95) → small variance → eggs are more coherent than chance → blue
- Low index (< 5) → large variance → eggs are noisier than chance → red
- Middle (40–90) → normal random behavior → green
Color table
| Color | Index | Meaning |
|---|---|---|
| Blue | > 95% | Significantly small variance — deep coherence |
| Cyan | 90–95% | Small variance — probable coherence |
| Green | 40–90% | Normal random behavior |
| Yellow | 10–40% | Slightly elevated variance |
| Orange | 5–10% | Strongly elevated variance |
| Red | < 5% | Significantly large variance |
Embed the dot
<iframe src="https://your-domain.com/gcp.html"
height="48" width="48" scrolling="no" frameborder="0"></iframe>
API
| Endpoint | Description |
|---|---|
POST /api/data |
Submit a trial {egg_id, timestamp, trial} |
GET /api/status |
Latest analysis result |
GET /api/history?limit=60 |
Last N analysis records |
GET /api/eggs |
Eggs active in the last 2 minutes |
Environment variables
Server
| Variable | Default | Description |
|---|---|---|
DB_PATH |
/data/gcp.db |
SQLite database path |
Egg
| Variable | Default | Description |
|---|---|---|
SERVER_URL |
http://localhost:8000 |
Server to send data to |
EGG_ID |
auto-generated | Override the egg's identifier |