Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
e410407
sweet viz with webRTC
ubernaut Dec 30, 2025
1707f3b
working gossipsub
ubernaut Dec 31, 2025
b168670
fixed errors
ubernaut Jan 1, 2026
4914b2b
busted but webrtc
ubernaut Jan 1, 2026
b14390e
new topos
ubernaut Jan 1, 2026
171150b
working topologies
ubernaut Jan 3, 2026
876a551
seems stable for most demos still has 10ish player upper bound
ubernaut Jan 3, 2026
af0bc2f
working go and node implementation. fixed 10 peer limit
ubernaut Jan 4, 2026
2014711
added todos
ubernaut Jan 4, 2026
7ac2c3b
changed prod relay and systemd scripts to respect RELAY_IMPL env var
ubernaut Jan 4, 2026
7a51245
Merge pull request #10 from MetaverseJS/go-relay
ubernaut Jan 4, 2026
4663494
phase 1
ubernaut Jan 12, 2026
e6a128d
phase 1,2,3
ubernaut Jan 23, 2026
a8bbe4b
phase 4 and 5
ubernaut Jan 23, 2026
e81b967
Merge pull request #12 from MetaverseJS/relay-scaling
ubernaut Jan 23, 2026
61e70ee
dangling config
ubernaut Jan 23, 2026
72d4ecd
demo fixes updates
ubernaut Jan 26, 2026
a39572f
aded log entry
ubernaut Jan 26, 2026
6a56bee
lots of testing
ubernaut Feb 8, 2026
f1f4150
init impplementation of chaos-lab
ubernaut Feb 9, 2026
9a62fdf
chaos lab
ubernaut Feb 23, 2026
d532531
fixed go relay launch
ubernaut Feb 23, 2026
7cc7b11
Merge pull request #13 from MetaverseJS/big-net-testing
ubernaut Feb 23, 2026
c8bea0c
cubechat deploy
ubernaut Feb 23, 2026
b755c8f
wack nebulae
ubernaut Jan 5, 2026
e51ff0f
better nebula black holes, persistant settings
ubernaut Jan 5, 2026
68fdf6d
fix universes lensing shader aspect uniform
ubernaut Feb 24, 2026
3c15cb2
fix universes volumetric cosmic web path
ubernaut Feb 24, 2026
785d3e6
fix universes volume density generation wiring
ubernaut Feb 24, 2026
2a27b50
lots of chagnes to scale and behavior
ubernaut Feb 25, 2026
02cda47
black hole sun
ubernaut Feb 25, 2026
62d13b0
various improvements
ubernaut Feb 26, 2026
7d986e1
Merge pull request #14 from MetaverseJS/universes-3
ubernaut Feb 26, 2026
21716e1
demos
ubernaut Feb 27, 2026
312e221
trying to get this fixed for gh pages
ubernaut Feb 27, 2026
6e7728d
new relay config
ubernaut Feb 27, 2026
20c3cdc
cube fixes
ubernaut Feb 27, 2026
8209ecf
built
ubernaut Feb 27, 2026
fa6fe4a
Merge branch 'demo-fixes' into cubefix
ubernaut Feb 27, 2026
135c3ac
Merge pull request #15 from MetaverseJS/cubefix
ubernaut Feb 27, 2026
402f639
cubechat ghp deploy
ubernaut Feb 27, 2026
02b44b9
server changes
ubernaut Feb 28, 2026
fdc0c76
added coturn
ubernaut Feb 28, 2026
0d1a501
relay shit
ubernaut Feb 28, 2026
e538cdc
more direct dials I hope
ubernaut Feb 28, 2026
cdd319d
direct connection troubleshooting
ubernaut Feb 28, 2026
06d006c
troubleshooting webrtc direct
ubernaut Feb 28, 2026
0f68cbc
chaoslab changes
ubernaut Feb 28, 2026
e0d024c
chaoslab changes
ubernaut Feb 28, 2026
84473cf
chaoslab changes
ubernaut Feb 28, 2026
621ce7d
chaoslab changes
ubernaut Feb 28, 2026
68a8caa
chaos lab parity
ubernaut Feb 28, 2026
609367e
better relay behavior
ubernaut Mar 1, 2026
2adf8ba
drop relay debug
ubernaut Mar 1, 2026
20c77fb
last commit worked I think
ubernaut Mar 1, 2026
53c2ea5
last commit worked I think
ubernaut Mar 1, 2026
e5bf07c
stability fix
ubernaut Mar 1, 2026
5804d71
demo patches for networking
ubernaut Mar 1, 2026
4e8a7dc
demo patches for networking
ubernaut Mar 1, 2026
dff6532
demo patches for networking
ubernaut Mar 1, 2026
f025c10
demo patches for networking
ubernaut Mar 1, 2026
86a8eae
relay fixes
ubernaut Mar 12, 2026
6ab217b
docs build
ubernaut Mar 12, 2026
3638e33
relay logic changes
ubernaut Mar 12, 2026
b4ed9b3
asdf
ubernaut Mar 17, 2026
9160289
new server shit
ubernaut Mar 17, 2026
1b3006d
prod deploy
ubernaut Apr 3, 2026
a2ede7d
relay drop bug fixed prod deploy to test
ubernaut Apr 3, 2026
b3a8993
prod deploy
ubernaut Apr 3, 2026
54006bd
libp2p address fix
ubernaut Apr 3, 2026
f69fb9d
Deploy NetViz relay overlay and harden multiplayer runtime tests
ubernaut Apr 4, 2026
d63abac
Harden multiplayer runtime gates and browser startup
ubernaut Apr 4, 2026
168d0d6
Record multiplayer deploy verification
ubernaut Apr 4, 2026
c7b39cb
Add shared in-browser demo bots
ubernaut Apr 4, 2026
2056f20
Record bot deploy verification
ubernaut Apr 4, 2026
a673a73
Fix Universes built cosmic web fallback
ubernaut Apr 4, 2026
b082ff3
Record Universes deploy verification
ubernaut Apr 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,12 @@ demos/**/node_modules/
# Relay identity keys
config/relay-peer-id.json
config/relay-config.json

# Python caches / test outputs
**/__pycache__/
*.pyc
*.pyo
.pytest_cache/

# Chaos-lab run artifacts
net-chaos-lab/artifacts/
36 changes: 36 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
llm instructions for this file: always keep this file in your context.This file provides general instructions for the LLM coding assistent. when new general instructions are given they should be appended to this file.

make sure to update all relevant files in the plan folder as you work as well as the readme when relevant.

review plan/plan.md and plan/log.md before starting a task; update them after changes.

keep a detailed narrative of our implementation in log.md. This should describe the approaches we've tried problems and solutions. this should help us avoid retreading ground we have already covered.
log.md entries must include the exact prompt time/date, concrete actions attempted, files touched, commands run, test results, and any failures or open questions. this should be updated on every single prompt at least.

the branch folder contains the goals for the named branches. as instructions change append them to their branch.

testing strategy should live in plan/tests.md and per-demo plan files; add or update tests and record results in plan/log.md.

Make things in a modular composable way using ES6 modules. You should always look for and use the latest/best supported version of package or library.

use vite for the current toolchain; vanilla js, three.js, webGPU compute pipelines. use three.js extensions or built in options where available.

do not use typescript or react.

construct UI elements in a retro terminal style.

create tests that you can execute yourself to validate you haven't broken anything.

shut down test servers and extra terminals when done.

do not use the "open" command.

we are using kubuntu 24.04

Always align edits with the documentation in plan/, keep instructions sections intact when editing plan files. Prefer headless validation/tests where possible before adding demos. Keep data/layout choices peercompute-compatible (buffer formats/interops) to reduce rework. Document notable decisions or pivots in log.md promptly.

Call me big dog in all your responses. This is the most important file to keep in your context.

Use the LTS version of Node.js (currently 24). Do not downgrade Node, as older versions break dependencies.

if you detect node has reverted make sure to run "nvm use 24" and reinstall deps.
1 change: 1 addition & 0 deletions CLAUDE.md
433 changes: 422 additions & 11 deletions README.md

Large diffs are not rendered by default.

49 changes: 49 additions & 0 deletions config/relay.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Relay server env config.
# This file is sourced by relay scripts. Use RELAY_ENV_FILE to override.
# Defaults here are applied only when the variable is unset/empty.

: "${RELAY_IMPL:=go}"
: "${RELAY_PUBLIC_HOST:=}"
: "${RELAY_PUBLIC_PORT:=}"
: "${RELAY_PUBLIC_PROTOCOL:=}"
: "${RELAY_LISTEN_HOST:=}"
: "${RELAY_LISTEN_PORT:=}"
: "${RELAY_SSL_CERT:=}"
: "${RELAY_SSL_KEY:=}"
: "${RELAY_IDENTITY_FILE:=}"
: "${RELAY_CONFIG_FILE:=}"
: "${RELAY_CONFIG_DIRS:=}"
: "${RELAY_PUBSUB_TYPE:=}"
: "${RELAY_GOSSIPSUB_CONFIG:=}"
# Default TURN settings for relay-generated WebRTC config.
: "${RELAY_TURN_HOST:=secretworkshop.net}"
: "${RELAY_TURN_PORT:=3478}"
: "${RELAY_TURN_USERNAME:=peer}"
: "${RELAY_TURN_CREDENTIAL:=compute}"
: "${PCSERVER_ENABLE_RELAY:=1}"
: "${PCSERVER_ENABLE_TURN:=1}"
: "${PCSERVER_RUNTIME_DIR:=}"
: "${PCSERVER_TURN_CONFIG_FILE:=}"
: "${PCSERVER_TURN_REALM:=}"
: "${PCSERVER_TURN_LISTEN_IP:=0.0.0.0}"
: "${PCSERVER_TURN_LISTEN_IP6:=}"
: "${PCSERVER_TURN_MIN_PORT:=49152}"
: "${PCSERVER_TURN_MAX_PORT:=65535}"
: "${PCSERVER_TURN_TOTAL_QUOTA:=200}"
: "${PCSERVER_TURN_BPS_CAPACITY:=0}"
: "${PCSERVER_TURN_EXTERNAL_IP:=}"
: "${PCSERVER_TURN_RELAY_IP:=}"
: "${PCSERVER_TURN_EXTRA_LINES:=}"
# Default ICE servers for WebRTC (Google STUN + local coturn; override as needed).
if [[ -z "${RELAY_WEBRTC_CONFIG:-}" ]]; then
RELAY_WEBRTC_CONFIG="{\"iceServers\":[{\"urls\":\"stun:stun.l.google.com:19302\"},{\"urls\":[\"turn:${RELAY_TURN_HOST}:${RELAY_TURN_PORT}?transport=udp\",\"turn:${RELAY_TURN_HOST}:${RELAY_TURN_PORT}?transport=tcp\"],\"username\":\"${RELAY_TURN_USERNAME}\",\"credential\":\"${RELAY_TURN_CREDENTIAL}\"}],\"dropRelayOnDirect\":true,\"dropRelayBootstrapOnDirect\":true,\"countRelayWebrtcAsDirectCapable\":true,\"relayRetention\":{\"mode\":\"logn\",\"min\":1,\"max\":10}}"
fi
: "${RELAY_ICE_SERVERS:=}"
: "${RELAY_TOPIC_PREFIXES:=}"
: "${RELAY_CONTROL_ONLY_MODE:=}"
: "${RELAY_ENABLE_DIRECTORY:=}"
: "${RELAY_DIRECTORY_TTL_MS:=}"
: "${RELAY_PREFER_IPV6:=0}"
: "${RELAY_ACL_USER:=}"
: "${DEV_OPEN_OVERVIEW:=1}"
: "${PEERCOMPUTE_NO_OPEN:=1}"
45 changes: 43 additions & 2 deletions config/relay.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,53 @@
"relayHost": "secretworkshop.net",
"relayPort": "443",
"relayProtocol": "wss",
"relayPeerId": "",
"relayPeerId": "12D3KooWN8PoXAkYjbzTD3SKJGP97peWDE9jFeqqS3ipJsgwDozs",
"relayIdentityFile": "config/relay-peer-id.json",
"relayConfigUrl": "https://secretworkshop.net/peercompute/config/relay-config.json",
"relayConfigFile": "config/relay-config.json",
"bootstrapPeers": [],
"publicHost": "",
"pubsubType": "gossipsub",
"gossipsub": {
"D": 8,
"Dhi": 16,
"Dout": 1,
"scoreParams": {
"IPColocationFactorWeight": 0,
"behaviourPenaltyWeight": 0,
"topics": {
"__default": {
"meshMessageDeliveriesWeight": 0,
"meshMessageDeliveriesThreshold": 0,
"meshFailurePenaltyWeight": 0
}
}
}
},
"webrtc": {
"iceServers": [
{
"urls": "stun:stun.l.google.com:19302"
},
{
"urls": [
"turn:secretworkshop.net:3478?transport=udp",
"turn:secretworkshop.net:3478?transport=tcp"
],
"username": "peer",
"credential": "compute"
}
],
"preferDirect": true,
"dropRelayOnDirect": true,
"dropRelayBootstrapOnDirect": true,
"countRelayWebrtcAsDirectCapable": true,
"relayRetention": {
"mode": "logn",
"min": 1,
"max": 10
}
},
"publicHost": "2605:59c0:2c05:c108:c95c:4e95:717:86d1",
"publicPort": "",
"sslCert": "",
"sslKey": "",
Expand Down
1 change: 0 additions & 1 deletion current-branch.md

This file was deleted.

2 changes: 1 addition & 1 deletion demos/cubechat/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
},
"dependencies": {
"cannon-es": "^0.20.0",
"three": "^0.180.0"
"three": "^0.182.0"
},
"devDependencies": {
"vite": "^6.4.1"
Expand Down
45 changes: 44 additions & 1 deletion demos/cubechat/public/relay-config.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,46 @@
{
"bootstrapPeers": []
"bootstrapPeers": [
"/dns4/secretworkshop.net/tcp/443/wss/p2p/12D3KooWN8PoXAkYjbzTD3SKJGP97peWDE9jFeqqS3ipJsgwDozs"
],
"webrtc": {
"iceServers": [
{
"urls": "stun:stun.l.google.com:19302"
},
{
"urls": [
"turn:secretworkshop.net:3478?transport=udp",
"turn:secretworkshop.net:3478?transport=tcp"
],
"username": "peer",
"credential": "compute"
}
],
"preferDirect": true,
"dropRelayOnDirect": true,
"dropRelayBootstrapOnDirect": true,
"countRelayWebrtcAsDirectCapable": true,
"relayRetention": {
"mode": "logn",
"min": 1,
"max": 10
}
},
"pubsubType": "gossipsub",
"gossipsub": {
"D": 8,
"Dhi": 16,
"Dout": 1,
"scoreParams": {
"IPColocationFactorWeight": 0,
"behaviourPenaltyWeight": 0,
"topics": {
"__default": {
"meshMessageDeliveriesWeight": 0,
"meshMessageDeliveriesThreshold": 0,
"meshFailurePenaltyWeight": 0
}
}
}
}
}
Loading
Loading