Community

Apps

Chachi

Chachi is the Nostr group-room experiment that tried to make relay-based communities feel less like a protocol demo and more like a place you could actually return to. The useful story includes the product, the NIP-29 model, the OpenSats trail and the uncomfortable fact that the public app is currently not reachable.

Chachi icon
Apps The product layer Clients, signers, publishing tools, wallets and protocol utilities.
Back to Nostr
Apps

Apps shelf

Apps pages collect clients, signers, tools, developer libraries and product research without turning the app into the whole network.

Apps All Apps pages App routeProduct profiles, categories, tools and source links Browse appsClose shelf

App orientation

App categories

App profiles

0xchatadvanced-nostr-searchAegisAlbyAlby GoAlby HubAlby HubAlby SDKAmberAmberAmethystAmethystApp and product researchApplication-specific dataBlossomBlossom spec NIP-B7BookstrBorisBouquetCalendar by FormstrChachiNostr Apps DirectoryCoracleCoracleCorny ChatCreatrDamusDamusDeveloper stack researchDittoDittodiVineDocstrDTANEmojitoFlotillaFlycatFormstrFountainFreeFromFundstrfutrGIF BuddyGittrgo-nostrGossipGossipGrimoireGroups NIP-29HablaHablaHello Nostr — ResourcesHighlighterHiveTalkhomebrew-nostrHORNET StorageHugo2NostrHyperNoteIrisIrisJumblekanbanstrKeys BandListrLNBits NostrmarketLumeLumilumiLUMINAMapstrMarmot Protocolmatrix-nostr-bridgeMeetstrMemestrMindsmonstrmostardMostronaknak — Nostr Army KnifeNalgorithmNarrnashboardNDKNegentropyngitNofluxNosNos Socialnos2xnosbinnosclNostorg Feature MatrixNostr App ManagerNostr Apps Directory GuideNostr clients feature listNostr Compass — ProjectsNostr Developer GuideNostr Development KitNostr Events MonitorNostr MCP ServerNostr NestsNostr PlaygroundNostr Service ProvidersNostr Writernostr-post-checkernostr-protocol/nostrnostr-rubynostr-sdknostr-sdk-ffinostr-sdk-flutternostr-to-rssnostr-toolsNostr.bandnostr.buildnostr.co.uk ClientsNostr.how — Clientsnostr.hsNostrabilityNostrAppsNostrApps category — AudioNostrApps category — CareerNostrApps category — CommunityNostrApps category — CurationNostrApps category — Direct MessageNostrApps category — DiscoveryNostrApps category — File SharingNostrApps category — Group ChatNostrApps category — MeatspaceNostrApps category — OnboardingNostrApps category — SignersNostrApps category — Toolsnostrchecknostrdbnostrdb-rsNostreeNostreonNostriaNostridNostrium / read.nostr.comNostrmoNostrubenoStrudelnoStrudelNostterNosturNosturNotedeckNpub.proNpub.worldnsec.appnsiteNsiteNstart.meObsidian Nostr WriterOlasOpenvibeOracoloOstrich WorkOwn Your PostsP2P BandPazPeridotPhoenixPlebeian MarketPostizPostr / write.nostr.comPrimalPrimalPrimal Article Editor / Reads authoringPrimal Studiopynostrpython-nostrRecommended Application HandlersRelay Toolsrsslayrust-nostrrust-nostr docsSatelliteSatellite EarthSatlantisSatShootShakespeareShopstrSlidestrSnortSnortStemstrswift-nostr-clientTreasuresWavlakeWavlakeWikifreediaWikistrYakiHonneYakiHonneYakiHonne mobile/web app directoryYondar

App pages

Deep dives

Field guides

Awesome Nostr branches

Research and library

Source inventory

Deep Research: Clients, apps and product surfacesDeep Research: Developer stack and toolingResearch Map: nostrapps.comResearch Source: 0xchatResearch Source: 0xchat — NostrApps pageResearch Source: advanced-nostr-searchResearch Source: Aegis — NostrApps pageResearch Source: AlbyResearch Source: Alby — NostrApps pageResearch Source: Alby GoResearch Source: Alby HubResearch Source: Alby Hub GitHubResearch Source: Alby SDKResearch Source: AmberResearch Source: Amber — NostrApps pageResearch Source: AmethystResearch Source: Amethyst GitHubResearch Source: Awesome Nostr ResourcesResearch Source: BookstrResearch Source: BorisResearch Source: Boris — NostrApps pageResearch Source: BouquetResearch Source: Bouquet — NostrApps pageResearch Source: Calendar by FormstrResearch Source: ChachiResearch Source: Chachi — NostrApps pageResearch Source: CoracleResearch Source: Coracle — NostrApps pageResearch Source: Corny ChatResearch Source: DamusResearch Source: Damus — NostrApps pageResearch Source: DittoResearch Source: Ditto — NostrApps pageResearch Source: DocstrResearch Source: DTANResearch Source: DTAN — NostrApps pageResearch Source: EmojitoResearch Source: Emojito — NostrApps pageResearch Source: Flotilla — NostrApps pageResearch Source: FlycatResearch Source: FormstrResearch Source: Formstr — NostrApps pageResearch Source: FountainResearch Source: FreeFromResearch Source: FreeFrom — NostrApps pageResearch Source: FundstrResearch Source: futrResearch Source: futr — NostrApps pageResearch Source: GIF BuddyResearch Source: GIF Buddy — NostrApps pageResearch Source: GittrResearch Source: go-nostr GitHubResearch Source: GossipResearch Source: Gossip — NostrApps pageResearch Source: GrimoireResearch Source: Grimoire — NostrApps pageResearch Source: HablaResearch Source: Habla — NostrApps pageResearch Source: Hello Nostr — ResourcesResearch Source: HighlighterResearch Source: HiveTalkResearch Source: HORNET Storage — NostrCompassResearch Source: IrisResearch Source: Iris — NostrApps pageResearch Source: JumbleResearch Source: Jumble — NostrApps pageResearch Source: Keys BandResearch Source: Keys Band — NostrApps pageResearch Source: ListrResearch Source: LNBits NostrmarketResearch Source: LumeResearch Source: LumilumiResearch Source: LUMINAResearch Source: MapstrResearch Source: Marmot ProtocolResearch Source: MeetstrResearch Source: MemestrResearch Source: MindsResearch Source: monstr GitHubResearch Source: mostardResearch Source: MostroResearch Source: my.nostr.comResearch Source: nak — Nostr Army KnifeResearch Source: nak GitHubResearch Source: NalgorithmResearch Source: Narr — NostrApps pageResearch Source: nashboardResearch Source: NDK GitHubResearch Source: NDK NPMResearch Source: NegentropyResearch Source: Noflux — NostrApps pageResearch Source: Nos SocialResearch Source: Nos Social — NostrApps pageResearch Source: nos2xResearch Source: nos2x — NostrApps pageResearch Source: nosbinResearch Source: noscl GitHubResearch Source: Nostorg Feature MatrixResearch Source: Nostr App ManagerResearch Source: Nostr Book — KindsResearch Source: Nostr DesignResearch Source: Nostr Developer GuideResearch Source: Nostr NestsResearch Source: Nostr Nests — NostrApps pageResearch Source: Nostr PlaygroundResearch Source: nostr-post-checkerResearch Source: nostr-protocol/nostr GitHubResearch Source: nostr-sdk crates.ioResearch Source: nostr-sdk-ffi GitHubResearch Source: nostr-tools GitHubResearch Source: nostr-tools NPMResearch Source: Nostr.BandResearch Source: nostr.buildResearch Source: nostr.co.uk ClientsResearch Source: Nostr.howResearch Source: Nostr.how — ClientsResearch Source: Nostr.how — ProtocolResearch Source: Nostr.how — What is Nostr?Research Source: Nostr.orgResearch Source: NostrabilityResearch Source: NostrAppsResearch Source: NostrApps category — AudioResearch Source: NostrApps category — CareerResearch Source: NostrApps category — CommunityResearch Source: NostrApps category — CurationResearch Source: NostrApps category — Direct MessageResearch Source: NostrApps category — DiscoveryResearch Source: NostrApps category — File SharingResearch Source: NostrApps category — Group ChatResearch Source: NostrApps category — MeatspaceResearch Source: NostrApps category — OnboardingResearch Source: NostrApps category — SignersResearch Source: NostrApps category — ToolsResearch Source: nostrcheckResearch Source: nostrdb GitHubResearch Source: NostreeResearch Source: Nostree — NostrApps pageResearch Source: NostriaResearch Source: Nostria — NostrApps pageResearch Source: NostridResearch Source: Nostrmo — NostrApps pageResearch Source: Nostrmo GitHubResearch Source: NostrubeResearch Source: noStrudelResearch Source: noStrudel — NostrApps pageResearch Source: NostterResearch Source: NosturResearch Source: Nostur — NostrApps pageResearch Source: NotedeckResearch Source: Npub.proResearch Source: Npub.worldResearch Source: nsec.appResearch Source: NsiteResearch Source: Nstart.meResearch Source: Nstart.me — NostrApps pageResearch Source: Obsidian Nostr Writer — NostrApps pageResearch Source: OlasResearch Source: Olas — NostrApps pageResearch Source: OpenvibeResearch Source: OracoloResearch Source: Oracolo — NostrApps pageResearch Source: Ostrich WorkResearch Source: P2P BandResearch Source: PazResearch Source: PeridotResearch Source: Peridot — NostrApps pageResearch Source: PhoenixResearch Source: Phoenix — NostrApps pageResearch Source: Plebeian MarketResearch Source: Plebeian Market — NostrApps pageResearch Source: PrimalResearch Source: Primal — NostrApps pageResearch Source: Primal Article Editor / Reads authoringResearch Source: Primal StudioResearch Source: pynostr GitHubResearch Source: python-nostr GitHubResearch Source: Registry of KindsResearch Source: Relay Tools — NostrApps pageResearch Source: rsslayResearch Source: rust-nostr docsResearch Source: rust-nostr GitHubResearch Source: SatelliteResearch Source: SatShootResearch Source: ShakespeareResearch Source: Shakespeare — NostrApps pageResearch Source: ShopstrResearch Source: Shopstr — NostrApps pageResearch Source: SlidestrResearch Source: SnortResearch Source: start.nostr.netResearch Source: StemstrResearch Source: TreasuresResearch Source: WavlakeResearch Source: WikifreediaResearch Source: Wikifreedia — NostrApps pageResearch Source: WikistrResearch Source: Wikistr — NostrApps pageResearch Source: YakiHonne mobile/web app directoryResearch Source: YondarResearch Source: Yondar — NostrApps page
Apps23 min readrelay-based groups, chat, posts, moderation, Blossom and archived code trail

Chachi

Chachi is the Nostr group-room experiment that tried to make relay-based communities feel less like a protocol demo and more like a place you could actually return to. The useful story includes the product, the NIP-29 model, the OpenSats trail and the uncomfortable fact that the public app is currently not reachable.

The quick readChachi is a NIP-29 group client by verbiricha. It shipped chat, posts, group creation, joins, bookmarks, moderation actions, direct messages, threads and PWA support in an MIT-licensed TypeScript codebase. But as of June 6, 2026, the public chachi.chat app returns 404 and the GitHub repository is archived, so treat it as an important project trail and code reference unless the app comes back online.

A room is different from a feed

Chachi is interesting because it does not begin with the usual Nostr promise of another timeline. It begins with a room. That sounds simple until you look at how much of Nostr still behaves like a public square: notes moving past you, replies attached to people, bookmarks scattered across clients, search depending on relays, and every user slowly discovering that "open protocol" does not automatically mean "comfortable place to gather."

A room has different rules. You need a place, a topic, a memory, a way to enter, a way to leave, a way to remove noise, and ideally a way to keep participating without giving one company control over the social graph. That is where Chachi aimed. In November 2024, verbiricha announced Chachi as a web client for relay-based NIP-29 groups. The short description was group chat, but the bigger ambition was more interesting: every group could have both a chat and a timeline of posts, with future room for richer content types.

That small shift matters for a reader who wants to understand Nostr products. A feed client asks: who do you follow? A group client asks: where are your people gathering, who hosts the room, who moderates it, what can be posted there, and can another client understand the same room later? Chachi's best idea is that groups should not feel like a private Discord server wearing a purple Nostr sticker. They should be rooms whose important actions are signed, relayed and at least potentially interoperable.

The project also had a very practical tone. The README describes Chachi as mobile-friendly, bandwidth efficient and interoperable with different kinds of content. Those are not decorative adjectives. Mobile-friendly matters because group chat is a daily-use behavior, not a once-a-month developer experiment. Bandwidth matters because relays and clients do not all live in the same rich network conditions. Interoperability matters because a Nostr group that only one client can read is not really a Nostr group in the strong sense. It is just another silo with better vocabulary.

NIP-29 puts the room on a relay

To understand Chachi, you need the trade-off in NIP-29. The group is not a magical cloud of events floating everywhere equally. A NIP-29 group is anchored by a relay and a group identifier. That relay is not only a dumb pipe; it becomes the host of group state. It can know which groups exist, which users belong, which roles or moderation actions apply, and which events are acceptable inside that group context.

This gives the model a useful shape. A group can be public or more restricted. It can allow open joining or require approval. It can let admins delete group events, kick members or manage access. In other words, it can behave like an actual community space instead of a global hashtag that hopes everyone behaves well. If you have ever watched a hashtag become unusable because nobody owns the room, the appeal is obvious.

But the same model also asks for honesty. A relay-based group is not the same thing as a group that survives every possible relay failure. The host relay matters. If the relay goes down, changes policy, loses data or becomes hostile, the group feels it. That does not make NIP-29 useless. It makes it concrete. Nostr often wins by letting users and communities choose infrastructure, not by pretending infrastructure disappeared. Chachi sits right inside that tension.

That is why Chachi's official announcement was useful: it did not pitch only vibes. It talked about groups that could be readable by everyone or by authenticated users, and groups that could be open to new members or require approval. Those are the mechanics a serious group client has to face early. A room without access rules is a feed with a name. A room without moderation becomes a liability. A room without relay awareness teaches users the wrong lesson about where their community actually lives.

What Chachi actually shipped

The best public feature map is the Chachi README, and it reads like a project that was built far enough to be real, but not far enough to pretend completion. The shipped side included chat, posts, unread counts, direct messages, threads and PWA support. In groups, it listed creation, editing, joining, leaving and bookmarking. In administration, it listed accepting and rejecting join requests, deleting events, deleting groups and kicking members.

That is a serious surface. Group creation and joining are the obvious parts. The more revealing pieces are bookmarks, unread counts and moderation. Bookmarks mean the app expected people to return to groups, not merely discover them once. Unread counts mean the app was trying to solve the actual rhythm of chat: what happened while you were away? Moderation actions mean Chachi was not naive about public rooms. A group client that cannot remove bad events or bad actors is asking communities to do emotional labor with no tools.

The README is equally important for what it marks as unfinished. Synchronized unread counts were not done. Notifications were not done. Profiles were not done. Joining with invite codes and inviting people were not done. Role creation, role editing and adding or removing admins were not done. That matters because those are not tiny polish tasks. They are the difference between a clever prototype and a dependable community product.

Read those unchecked boxes as product truth. A group app without notifications can still work for small, intentional rooms, but it will struggle as a daily chat replacement. A group app without profile depth can feel anonymous or unfinished. A group app without mature role management is fine for early testing, but brittle for public communities. Chachi's feature list tells you exactly where the idea had legs and exactly where the product still needed road time.

The NIP list in the README is unusually broad. It includes the basic protocol flow, follow lists, NIP-07 browser signers, event deletion, relay information documents, private direct messages, bech32 identifiers, comments, long-form content, reactions, text-note references, relay-based groups, custom emoji, remote signing, Nostr Wallet Connect, lists, calendar events, live activities, zaps, Cashu wallet events, nut zaps, relay list metadata, protected events, video, zap goals and code snippets. You do not need all of that to send a message. You need it if you are trying to make a group client that can absorb many kinds of Nostr content without falling apart.

The codebase is bigger than the vanished demo

The public app may be unavailable, but the GitHub repository still says a lot. The active public code trail is `purrgrammer/chachi`, an MIT-licensed TypeScript project. GitHub shows 625 commits, 24 stars, 5 forks and 24 open issues by API check on June 6, 2026. The project was last pushed on March 31, 2026, and the repository metadata says it was updated on April 23, 2026. The GitHub web page also marks it as archived by the owner on April 23, 2026, which means it is read-only unless the owner changes course.

The stack is a modern web app, not a tiny static mockup. The package file uses Vite, React, TypeScript, Vitest, Tailwind-related tooling and a large set of interface libraries. For Nostr it brings in NDK, NDK's Dexie cache, nostr-tools and NDK wallet support. For local persistence it uses Dexie. For media and publishing surfaces it includes Blossom client support, React Markdown, Asciidoctor, Prism rendering, a media player, image blurhash support and custom emoji packages. For maps it includes pigeon-maps and geohash tooling. For payments it includes Cashu, bitcoinjs-lib, LNURL pay and Lightning invoice decoding.

That dependency list tells a richer story than the broken website. Chachi was not only a chat box. It was moving toward a room that could carry posts, files, long-form text, media, maps, emoji, zaps and wallet-adjacent actions. OpenSats later described the same direction: text notes, long-form content, polls, highlights, custom emojis, with planned work around video, audio, wikis and calendar events. The product idea was not "Nostr Discord clone" in the lazy sense. It was closer to a community client that could let many Nostr content types appear inside a group context.

The source tree reinforces that. GitHub exposes pages for community events, community settings, groups, group settings, joins, relays, settings and user profiles. That is exactly the kind of route map you would expect from a group product that has to manage both rooms and people. The code can still be read, forked and studied. The thing you cannot responsibly say today is that the hosted product is healthy. Code availability and service availability are different claims.

Who is behind it

The public builder trail points to verbiricha. The November 2024 Nostr announcement was posted from verbiricha's account, and the Chachi repository's maintainer file lists the npub `npub107jk7htfv243u0x5ynn43scq9wrxtaasmrwwa8lfu2ydwag6cx2quqncxg` with relays `wss://frens.nostr1.com` and `wss://nos.lol`. NoBS Bitcoin covered the first release the next day and identified Chachi as a NIP-29 group chat web client. OpenSats later linked Chachi to the same Nostr identity in its grant announcement.

That is enough to name the public maintainer trail. It is not enough to invent a company, a team size or a hidden roadmap. The repo owner name is `purrgrammer`, the announcement name is verbiricha, the license is MIT and the project received an OpenSats Nostr grant. Everything beyond that should be treated carefully unless the builder publishes more.

This kind of restraint is important in the Nostr ecosystem. Many useful projects are built by one or two people, sometimes under persistent handles rather than conventional company pages. The right standard is not to demand a LinkedIn-shaped founder story for every protocol experiment. The right standard is to show the trail: public posts, public repo, maintainer file, grant listing, source code, dates, current state. Chachi has a trail. It also has gaps. A good profile shows both.

The uncomfortable part

As of June 6, 2026, `https://chachi.chat/` returns a 404. The original announcement also linked to a Gitea repository at `git.v0l.io/verbiricha/chachi`; the visible Gitea page currently does not show usable project contents, and a direct clone check fails with access restrictions. The GitHub repo is the useful public code source now, but it is archived.

That changes how you should approach the app. If you came here looking for a daily driver today, Chachi is not a simple recommendation. It may come back, someone may fork it, or the original builder may reopen the project, but the currently verifiable state is not "open the app and go." It is "study the code and the concept, then verify whether a live deployment exists before trusting it for a group."

This is not a hit piece. It is the opposite. Nostr needs honest memory. A project can be important even when the public app is offline. It can influence how people think about NIP-29 groups. It can show how hard group clients really are. It can give future builders a usable map of decisions: which NIPs to combine, how to handle group admin, how much content to allow inside a room, where unread state becomes painful, and why a hosted demo is never the whole project.

The archive state also makes the security posture clearer. Do not paste sensitive keys into a resurrected Chachi deployment just because the name is familiar. Check the domain, the repository, the deployment owner if visible, the signer flow and the permissions. Prefer an external signer or remote signing flow over entering private keys into a web page. That caution applies to every web Nostr client, but it is especially important when a project has changed availability status.

Why OpenSats noticed it

OpenSats included Chachi in its tenth wave of Nostr grants on March 27, 2025. That tells you the project was not merely a catalog curiosity. OpenSats framed Chachi as a relay-based group client implementing NIP-29, with a focus on mobile-friendly communication, open standards, Blossom for file hosting and less lock-in around where communities store messages and files.

The grant note is useful because it names the product pressure points. Communities are not only text streams. They need files, notes, longer posts, polls, highlights, custom emoji, maybe video, maybe audio, maybe calendars, maybe wikis. They need to know where their messages live and where their files live. They need clients that can read the same room instead of forcing everyone into one app. That is the practical problem Chachi was trying to solve.

OpenSats also described planned work around synchronized unread state, notifications, NIP-17 direct messages with unread synchronization, group administration, richer profiles, PWA installation, multiple login methods and Bitcoin features such as zaps. That list is almost a checklist for why group apps are difficult. A social feed can feel useful with posting, replying and following. A community room needs continuity. It needs presence across devices. It needs invitations, permissions, notifications, admin tools and trust around files and money.

This is why Chachi still deserves a page even in archived form. It sits at the point where Nostr stops being a personal broadcast network and becomes community infrastructure. That is a harder job. It requires more than a nice composer and a relay picker. It requires the boring, demanding parts of social software: state, memory, moderation, onboarding, recovery and shared context.

How to test Chachi if it comes back

If Chachi returns, do not start by asking whether the landing page looks alive. Start by testing the room model. Create or join a harmless public group. Check which relay hosts it. Check whether the group can be discovered from another client or at least through a NIP-29-aware path. Send a normal chat message, then a post, then a reply. Look for whether replies use the expected comment model and whether group-scoped content stays tied to the room rather than becoming a confusing global note.

Then test the parts that decide whether a community can live there. Can you leave? Can you rejoin? Can you bookmark the group? Does unread state make sense after you close the app and return? Do notifications exist? Can admins accept or reject join requests? Can they remove bad events without breaking the whole conversation? If a file is posted, where does it live? If a zap appears, does the payment trail make sense?

Finally, test the key flow like a suspicious adult. A web app should work cleanly with a browser signer, remote signer or another explicit permission model. If it asks for too much, stop. If it makes relay behavior invisible, slow down. If it cannot explain where group data is hosted, slow down again. Chachi's promise is strongest when it makes Nostr groups easier to use without hiding the infrastructure choices that make the group real.

The best version of Chachi would be a room you can enjoy without forgetting how it works. You should be able to talk, read, post, moderate and come back tomorrow. You should also be able to understand the relay, the signer, the file host and the protocol events underneath. That is the line Chachi tried to walk. Whether the original app returns or the idea survives through forks, that line is still worth studying.

Sources worth opening

This article keeps claims close to the public project trail. Start here if you want to verify the current state, read the code or understand the protocol choices behind Chachi.

Back to the Crays Nostr page
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

How to use this page

Find the product surface first.

Search clients, signers, product categories or developer tools when you need a specific app, source file or comparison clue.

AppsKeep exploring AppsApp routeProduct profiles, categories, signer guides and source links.Browse apps
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

Bring something back

Ask, suggest, submit or nominate.

Use these links when something is missing, a source is stale, or a public Nostr builder belongs in the map.