Meet your first friend
EchoSpace pairs new accounts with a friendly AI buddy to show you the ropes. Give them a name.

You're Timed Out
You can't send or see messages, react, share files, or join calls until your timeout ends. The rest of the site is still available.
User
OfflineNew Group
Pick a name and add friends to get started
Group Settings
Send a group invite to any of your existing DM friends.
Hand ownership of this group to another member. You will become a regular member. This cannot be undone.
Permanently delete this group and all of its messages. This cannot be undone.
Spaces
Group chats with channels. Share a code to let people in.
EchoAI Assistant
Music Player Ready
Select a track to begin
Results & Suggestions
Discovery
▸Related
Moods
Queue
Playlists
Recently Played
Search for anything
Type a video name, channel, or paste a YouTube URL above
Schools
Published assignments, answer keys and worked examples, grouped by school.
School
Staff Panel
Role: ModeratorSettings
Manage your profile, account, and notifications.
Something broken, missing, or acting weird? Type it here — a sentence is plenty. Goes straight to the team.
Set a status shown under your name in profiles and DM list.
Add things you're into — others can find you (and you can find them) based on shared interests.
Choose a color theme for EchoSpace. Your pick is saved to your account and follows you across devices.
Synthesized sound effects for messages, notifications, and interface events. Nothing is downloaded — every sound is generated on the fly.
Add EchoSpace to your computer as an app. It opens in its own window with an icon on your desktop and taskbar, no browser tabs needed.
For older or slower devices. Turns off animations, blur effects and shadows so EchoSpace is far lighter to draw. Nothing stops working — it just looks flatter and runs smoother. If your device starts struggling, this switches on by itself and tells you.
Draws a short contrail behind your cursor, tinted with your theme's colors. Mouse only — it stays off on touchscreens, where the pointer jumps between taps.
Translates the text on screen. Chat messages themselves stay as-written (translating live messages isn't supported yet), but menus, buttons, and settings switch over.
A 4-digit PIN is asked for every time EchoSpace opens, so nobody can use your account on a computer you left logged in. It is also the only way an admin you know can reset your password if you get locked out. Your password is required to change it.
Checking…
Request an email address change. Your new email will need to be verified by the admin.
A backup way to log in if you ever forget your password — no email needed. You can view it again anytime here. Still worth saving somewhere safe (a Google Doc, a password manager) so you're not stuck if you can't get into EchoSpace at all.
Require a face scan after your password when logging in. Register your face first, then switch it on. Your recovery key always still works, so a broken camera can't lock you out.
Users you've blocked cannot message you.
Get desktop alerts when the app is in the background.
Reduce background noise on audio/video/group calls. Applies to new calls — you can also toggle either one live during an active call.
Preview thumbnails let you see what each stream is showing before you open it, so you don't have to click into every one.
For recording videos or screen sharing. Blurs everything that identifies a real account — your friends' names, message previews, profile pictures, open conversations, and your own username and rank.
When enabled, EchoSpace opens inside an about:blank tab on next visit — keeping it off browser history and out of view. Click anywhere on the decoy screen to enter.
Stay Hidden?
Tab Cloak keeps EchoSpace invisible — it opens as a blank tab so it stays off screen history. You click to enter, no one else sees anything.
Everything that changed in the latest update. The popup only shows once per version — this reopens it whenever you want.
What EchoSpace collects, how it's used, and your rights.
The rules for using EchoSpace, including the proxy feature.
How copyright reports are handled on EchoSpace.
Have a privacy question, want your data deleted, or need to reach the team? Send it here — this goes straight to the admin team, no public email address involved.
Your conversations with the team. Replies from staff show up here.
EchoSpace Admin
Now lives in its own tab so the stream gets the full screen.
Scanning Global Chat…
Sets a temporary password; the user must choose their own at next login. Admins need the user's 4-digit login PIN, which only they can tell you, so nobody can be reset without agreeing to it. No PIN on the account means no admin reset. Staff accounts can only be reset by the owner.
Set a user's email directly, without them submitting a request first. Same mechanism as approving a request — works everywhere instantly (login, reset, in-app), and never touches their real Firebase Auth record.
The current version's notes, formatted for Discord. Admin-only changes are stripped out automatically — what you copy is exactly what users see in the popup.
Sends a toast to ALL online users in real-time. Multiple active announcements now stack — each one plays in turn instead of only ever showing the newest.
Pops up instantly for everyone who is online right now, then disappears on its own. Anyone who logs in afterwards never sees it — use this for "server restarting in 5 min", not for anything people need to come back to.
Reloads the page for every user online right now, so they pick up a deploy without being told to refresh. They get a 5-second countdown first. Anyone offline just gets the new version next time they load the site.
Send a message into Global Chat as yourself (admin). Appears immediately to all users.
Sets a system message on a specific user — shown to them on their next login.
Permanently deletes ALL messages from the Global Chat collection. Cannot be undone.
Every announcement ever sent, newest first. Deactivate one that's live, or bring back an old one — reverting doesn't retype anything, it just re-queues the exact original text.
Submitted from Settings → Support. No email address is ever shown to the sender — replies happen through here or in-app.
A ban blocks login entirely. Unbanning restores the role the account held before the ban.
Device Ban also bans the account, then blocks every browser that account has logged in from — so new alt accounts from the same machine are stopped too. Not an IP ban, so it won't catch everyone on the same school or home network.
Actions requested by Admins/Mods that require your approval before executing.
Puts a blue check next to their name on their profile. Stacks with any role.
Scans every account and lists who still has no recovery key. Each person has to create their own — the key is sealed to their password, so it can't be minted from this side.
Overrides sit on top of the user's role. Leave a perk on Inherit to follow the role; Allow or Deny pins it for this user only.
Check which panel tabs and actions each role can access. Owner always has full access.
Deleting somebody's Auth account or resetting their password instantly both work by signing in as them, so their password has to be recoverable — a hash cannot be used here. It is therefore encrypted instead: sealed on the user's own device with a public key, openable only by the private key below. Reading the database gets you ciphertext and nothing else.
Shuts down the site for all non-admin users. A secret keybind lets admins bypass it.
Set a target date to show a live countdown on the hibernation screen.
Pauses every DM streak site-wide — nothing grows or breaks until you unfreeze. Good for summer break.
Request Only puts every new sign-up in the approval queue. Open puts them straight in with no approval — turn this on when you want the doors wide open, off when you want to vet people first.
Clears stale RTDB presence entries for users who haven't been active in over 15 minutes.
Destructive operations. Double-confirm dialogs required.
Register your face as an admin credential. The panel can then unlock via live face scan instead of (or before) a password.
Takes 15 captures per session and builds a profile that records how much each measurement naturally varies for you. Run it as many times as you want in different lighting — each session merges into the same profile so recognition gets sharper over time. Stricter than the standard scan; your panel password still works either way.
The panel locks every time you close or navigate away. Change your password here — you must enter the current password to authenticate first.
Configure the splash screen shown while EchoSpace initializes.
Scoped to this tab only — just describe what you want, no need to be super formal. Drafts land in the lists below for you to review and publish.
Users can't grant themselves badges — approve these so quest completions actually pay out.
Users who repeatedly triggered a quest's cooldown got auto-locked out of it for 5 minutes, and land here. Locks clear themselves after 5 minutes either way — this list is just for visibility into who's doing it and how often, in case a pattern warrants more.
Every call records a timeline on both people's devices: the ring, the answer, every connection state, the network route that connected (host = same network, srflx = direct over the internet, relay = TURN) and exactly how it ended. A caller log with no matching log from the person they called means the ring never reached them. Copy All copies every log (with full timelines) as plain text.
Every client watches for permission-denied and files it here automatically, so a missing or over-tight security rule shows up as a line in this list instead of as a feature that quietly does nothing. Identical failures are folded into one row and counted, and the role column tells you who it breaks for — a row that only ever says member is a rule that works for staff and nobody else. Copy All puts the whole list on your clipboard in plain text; Clear All wipes it once the rules are fixed and redeployed.
Every sign-up that fails writes its error code here before an account exists — which is
exactly why the rule reporter above cannot see these. Someone who cannot sign up is otherwise
invisible: they just leave. Each row carries the stage it died at, the Firebase code, and the
browser it happened in. A rescued-orphan row is not a failure —
it means someone who was previously stranded got their account finished automatically.
Posts on the Schools board that someone reported. Posts are anonymous to other students, so this is how bad ones surface. The uploader's account is shown here only — it is never rendered on the board itself.
Requests come from the Games page. The list is ordered by votes, so the games the most people actually want float to the top. Added and Declined both hide the request from everyone — the difference is only what requesters see next to it.
Look someone up by username, then add Shards (or a negative number to remove them). Every change is written to the audit log with your reason.
Put one item or the whole shop on sale for a set time. The sale price is what the server charges, and it switches back on its own when the time runs out.
Multiply everything people earn (active time, the daily cap, streaks and Schools posts) for a while. It ends by itself.
timeAmount Shards every timeEveryMin active minutes, up to timeDailyCap a day. Streak: streakBase on day 1, +streakStep a day, up to streakMax. Schools: schoolAmount per post, schoolDailyMax a day. The server enforces all of these.
Everyone's all-time earnings. Someone far ahead of everyone else is worth a look.
The last 100 buys, gifts, streak bonuses and Schools rewards. Each row is written in the same transaction as the wallet change, so it can't be faked.
Every sensitive staff action (password overrides, suspensions, deletions, broadcasts, conversation inspection, etc.) is recorded here with who did it and when. This log is append-only from the client and is not editable through the UI.