Location channels are geographically scoped public chat rooms carried over the Nostr relay network. Unlike the Bluetooth mesh, they require an internet connection and connect you with anyone in the same geographic area who is also using Bitchat — including people far outside Bluetooth range.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/permissionlesstech/bitchat/llms.txt
Use this file to discover all available pages before exploring further.
What Is a Geohash?
A geohash encodes a geographic area as a short string of characters. Longer strings represent smaller, more precise areas; shorter strings cover wider regions. Bitchat uses geohash precision to define channel scope:| Level | Precision (characters) | Approximate area | Example |
|---|---|---|---|
| Block | 7 | ~150 m × 150 m | #dr5rsj7 |
| Neighborhood | 6 | ~1.2 km × 0.6 km | #dr5rs |
| City | 5 | ~5 km × 5 km | #dr5r |
| Province | 4 | ~40 km × 20 km | #dr5r |
| Region | 2 | ~2500 km × 1250 km | #dr |
#dr5rsj7 is a sub-room of neighborhood #dr5rs, which is itself a sub-room of city #dr5r, and so on up to region #dr. Joining a coarser channel does not automatically show you messages from finer channels — each geohash is a distinct room.
Joining a Location Channel
Grant location permission
Bitchat needs location access to determine which geohash channels are available to you. Enable location access when prompted, or go to Settings → Privacy → Location Services → Bitchat.
Tap the location icon
In the channel list or the composer toolbar, tap the location icon. Bitchat calculates your current geohash and lists the available channel levels.
Select a precision level
Choose the geographic scope you want:
- Block — your immediate surroundings (a street corner, a venue)
- Neighborhood — your district or area of the city
- City — the whole city and its immediate surroundings
- Province — your state, province, or county
- Region — a continental or country-scale area
Location channels require an active internet connection. Bitchat connects to geographically nearby Nostr relays selected from a directory of 290+ relays ranked by distance to your geohash center. If you are offline or no nearby relays are reachable, the channel will be unavailable.
Ephemeral Keys
Bitchat derives a fresh secp256k1 key pair for each geohash area you participate in. This key pair is used to sign your Nostr events and to receive events addressed to you in that channel. Using a different key per geohash area means your activity in a neighborhood channel is not cryptographically linkable to your activity in a city channel — or to your Bluetooth mesh identity. Presence heartbeats (Nostr kind 20001) are sent periodically to region, province, and city precision levels only. Block and neighborhood levels are excluded from presence broadcasts to limit how precisely your location can be inferred by passive observers.Relay Selection
Bitchat maintains a directory of Nostr relays with GPS coordinates (online_relays_gps.csv) bundled with the app and refreshed periodically over the network (or over Tor, if enabled). When you join a channel, Bitchat queries the directory for the relays geographically closest to your geohash center and connects to those.
Relay selection is deterministic for a given directory and geohash: every device with the same relay directory picks the same set of relays for a given channel, which means publishers and subscribers reliably converge on the same relay pool.
Privacy Considerations
Location channels offer community reach in exchange for some geographic disclosure. Before joining, be aware of what is visible to relays and observers: A 7-character block geohash covers roughly a 150 × 150 meter square. Anyone who knows which block geohash you are publishing to can narrow your location to that cell. Use a coarser precision level (city or region) if tighter geographic privacy is important./drop — Leaving a Location Note
From any channel context, the /drop <message> command pins a short text note to your building-level geohash (7-character precision) with a 24-hour NIP-40 expiry. Anyone who passes through that location and views area notes will see it until it expires.
/drop requires both location permission and location notes to be enabled in the Info screen. If no geo relays are reachable, the note is not posted.
IRC-Style Commands in Location Channels
Most slash commands work in location channels. A few are restricted because they depend on Bluetooth mesh features:| Command | Available in location channels |
|---|---|
/who | ✅ Lists visible channel participants |
/block / /unblock | ✅ Blocks by Nostr public key |
/msg | ✅ Opens a private chat |
/hug / /slap | ✅ Emote actions |
/drop | ✅ Drops a note at current location |
/pay | ⚠️ Requires explicit public flag (bearer-token risk) |
/fav / /unfav | ❌ Favorites are mesh-only |
/group | ❌ Groups are mesh-only |
/ping / /trace | ❌ Mesh diagnostics only |