You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(dashboard): add total unique peers counter and update docs
- Add new counter for total unique peers in dashboard UI
- Update command description to clarify default message scope
- Enhance README with new features and better organization
Copy file name to clipboardExpand all lines: README.md
+93-99Lines changed: 93 additions & 99 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,50 +5,83 @@
5
5
6
6
### The High-Availability Solution to a Problem That Doesn't Exist.
7
7
8
-
**Hypermind** is a completely decentralized, Peer-to-Peer deployment counter.
8
+
**Hypermind** is a completely decentralized, Peer-to-Peer deployment counter and ephemeral chat platform.
9
9
10
-
It solves the critical infrastructure challenge of knowing exactly how many other people are currently wasting 50MB of RAM running this specific container.
10
+
It solves the critical infrastructure challenge of knowing exactly how many other people are currently wasting ~~50MB of~~ RAM running this specific container, while providing a secure, serverless way to say "hello" to them.
11
11
12
12
---
13
13
14
-
## » What is this?
15
-
16
-
You have a server rack in your basement. You have 128GB of RAM. You have deployed the Arr stack, Home Assistant, Pi-hole, and a dashboard to monitor them all. **But you crave more.**
14
+
## What is this?
17
15
18
16
You need a service that:
19
17
20
-
1. Does absolutely nothing useful.
21
-
2. Uses "Decentralized" and "P2P" in the description.
22
-
3. Makes a number go up on a screen.
18
+
1.**Does absolutely nothing useful.**
19
+
2.**Uses "Decentralized" and "P2P" in the description.**
20
+
3.**Makes a number go up on a screen.**
23
21
24
22
**Enter Hypermind.**
25
23
26
24
There is no central server. There is no database. There is only **The Swarm**.
27
25
28
-
## » How it works
26
+
## How it works
27
+
28
+
We utilize the **Hyperswarm** DHT (Distributed Hash Table) to create a mesh network of useless nodes.
29
29
30
-
We utilize the **Hyperswarm** DHT (Distributed Hash Table) to achieve a singular, trivial goal of **Counting.**
30
+
1.**Discovery:** Your node screams into the digital void to find friends.
31
+
2.**Gossip:** Nodes connect and whisper "I exist" to each other.
32
+
3.**State:**
33
+
***Active Count:** Maintained via a distributed LRU cache of peers seen in the last 45 seconds.
34
+
***Total History:** Uses a **HyperLogLog** probabilistic data structure to estimate total unique peers with >98% accuracy.
35
+
4.**Chaos:** Connections are rotated every 5 minutes to ensure a dynamic, unblockable topology.
31
36
32
-
1.**Discovery:** Your node screams into the digital void (`hypermind-lklynet-v1`) to find friends.
33
-
2.**Gossip:** Nodes connect and whisper "I exist" to each other.
34
-
3.**Consensus:** Each node maintains a list of peers seen in the last 2.5 seconds.
37
+
## Features
35
38
36
-
If you turn your container off, you vanish from the count. If everyone turns it off, the network ceases to exist. If you turn it back on, you are the Creator of the Universe (Population: 1).
39
+
### 1. The Counter
40
+
It counts. That's the main thing.
41
+
***Active Nodes:** Real-time count of currently online peers.
42
+
***Total Unique:** A probabilistic estimate of every unique node ever encountered.
37
43
38
-
## » Deployment
44
+
### 2. Ephemeral Chat
45
+
A completely decentralized chat system built directly on top of the swarm topology.
46
+
***Modes:** Local (direct neighbors) and Global (gossip relay).
***Sensors:** Swarm health checks and statistics logging.
158
+
***WLED Support:** Visualize the swarm size on a literal LED strip.
125
159
126
160
### Homepage Dashboard
127
161
@@ -139,56 +173,17 @@ Add this to your `services.yaml`:
139
173
method: GET
140
174
mappings:
141
175
- field: count
142
-
label: Swarm Size
143
-
- field: direct
144
-
label: Friends
145
-
176
+
label: Active
177
+
- field: totalUnique
178
+
label: All Time
146
179
```
147
180
148
-
To get the icon to work, you have to add the icon to `/app/public/icons`. If you have homepage running in a docker you mount an extra volume in your compose file.
149
-
See detailed [instructions](https://gethomepage.dev/configs/services/#icons).
150
-
151
-
## » Environment Variables
152
-
153
-
| Variable | Default | Description |
154
-
| --- | --- | --- |
155
-
|`PORT`|`3000`| The port the web dashboard listens on. Since `--network host` is used, this port opens directly on the host. |
156
-
|`MAX_PEERS`|`50000`| Maximum number of peers to track in the swarm. Unless you're expecting the entire internet to join, the default is probably fine. |
157
-
|`ENABLE_CHAT`|`false`| Set to `true` to enable the ephemeral P2P chat terminal. |
158
-
159
-
## » Features
160
-
161
-
### 1. The Counter
162
-
It counts. That's the main thing.
163
-
164
-
### 2. Ephemeral Chat
165
-
**New:** A completely decentralized, ephemeral chat system built directly on top of the swarm topology.
166
-
167
-
***Ephemeral:** No database. No history. If you refresh, it's gone.
168
-
***Restricted (Default):** You can only talk to your ~32 direct connections.
169
-
***Global Mode:** Use `/global your message` to broadcast messages to the entire swarm (relayed via gossip).
170
-
***Chaotic:** Every 30 seconds, the network rotates your connections. You might be mid-sentence and—*poof*—your audience changes.
171
-
***Anonymous:** You are identified only by the last 4 characters of your node ID.
181
+
To get the icon to work, you have to add the icon to `/app/public/icons`. See detailed [instructions](https://gethomepage.dev/configs/services/#icons).
172
182
173
-
To enable this feature, set `ENABLE_CHAT=true`.
183
+
</details>
174
184
175
-
**Commands:**
176
-
*`/global on` - Enable global chat mode.
177
-
*`/global off` - Disable global chat mode (local only).
178
-
*`/global <message>` - Send a single message to the global swarm without switching modes.
179
-
180
-
## » Usage
181
-
182
-
Open your browser to: `http://localhost:3000`
183
-
184
-
The dashboard updates in **Realtime** via Server-Sent Events.
185
-
186
-
**You will see:**
187
-
188
-
***Active Nodes:** The total number of people currently running this joke.
189
-
***Direct Connections:** The number of peers your node is actually holding hands with.
0 commit comments