Community

Apps

0xChat

0xChat is not a generic social timeline with a DM tab bolted on. It is a messaging client that uses Nostr as the identity, relay and interoperability layer while adding practical chat features such as gift-wrapped DMs, secret chats, groups, calls, push notifications and small payments.

0xChat visual
0xChat icon
Apps The product layer Clients, signers, publishing tools, wallets and useful experiments.
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.

Apps29 min readChat-first Nostr client, encrypted DMs, private and relay groups, calls, Cashu payments, NWC, NIP-46 signing and mobile desktop releases

0xChat

0xChat is not a generic social timeline with a DM tab bolted on. It is a messaging client that uses Nostr as the identity, relay and interoperability layer while adding practical chat features such as gift-wrapped DMs, secret chats, groups, calls, push notifications and small payments.

The quick read0xChat is a chat-first Nostr client built by the 0xchat-app team around private messaging rather than public timeline browsing. The official site and GitHub organization describe it as secure chat built on Nostr, with private key login, encrypted private chats, encrypted contacts, private groups, public channels, audio/video calls and Lightning payments through Cashu. OpenSats describes the project as a cross-platform client by water783 that runs on iOS, Android and desktop, supports NIP-04 compatibility, NIP-17 and NIP-59 gift-wrapped DMs, a Secret Chat mode, NIP-29 relay-managed groups, voice notes, calls, Cashu, NWC balances and payments, NIP-46 remote signing, Tor/onion access and NIP-07 access for embedded Nostr web apps. The current public GitHub release checked on June 14, 2026 is v1.5.5 from March 11, 2026, with fixes around image and voice upload, Blossom/Originless fallback, avatars, Isar database crashes, cache clearing, desktop compatibility, FileDrop defaults and Docker support. You should evaluate 0xChat as a serious messenger with real Nostr interoperability and real privacy caveats: DM mode matters, Secret Chat history is locally recoverable only if you back up the database, relay groups are not encrypted, calls depend on relay signaling plus user-selected ICE/media infrastructure, push notifications involve a distributor path, and wallet features should be tested with tiny amounts before you treat them as everyday money.

What 0xChat really is

0xChat is a Nostr messenger. That sounds obvious, but it is the distinction that keeps the page honest. Many Nostr clients begin with a public feed and then add direct messages. 0xChat begins with chat: contacts, private conversations, groups, channels, voice notes, calls and payments inside a familiar messenger shape.

The official site describes 0xChat as a decentralized secure messaging app built on Nostr, with end-to-end encrypted DMs, private groups, voice and video calls, Lightning payments and Nostr channels. The GitHub organization uses a similar line: secure chat built on Nostr, private-key login, encrypted private chats and contacts, encrypted group chats, Cashu payments and public channels.

OpenSats gives the best independent shorthand. It calls 0xChat a chat-first Nostr client built by water783, running on iOS, Android, macOS, Windows and Linux. The feature list is not only social-posting vocabulary. It is messaging vocabulary: one-to-one encrypted DMs, private and public groups, channels, voice notes, audio/video calls that ring like native calls, Cashu wallet features and NWC-related payment support.

That makes 0xChat worth separating from generic social clients. If you are choosing a Nostr app mainly to follow public notes, you may care more about timeline ranking, long-form reads or discovery. If you are choosing an app to talk to people, coordinate a small group, test NIP-29 groups or carry encrypted DMs across clients, 0xChat belongs near the top of the evaluation pile.

The project and release trail

The visible project lives under the `0xchat-app` GitHub organization. The main repository, `0xchat-app-main`, is a Dart and Flutter application with an MIT license and public mobile and desktop build instructions. The organization also maintains supporting repositories for the website, 0xchat-core, nostr-dart, cashu-dart, a NIP-29 relay, Tor integration, WebRTC and a Nostr MLS package.

The main app README checked for this page says the app is open source, built on Nostr and available on Android, iOS, macOS, Linux and Windows. It also recommends self-hosting an Originless media distributor for reliable media hosting because public Nostr infrastructure can be heavily spammed. That small sentence is important: 0xChat is polished, but it still lives in the real Nostr environment of relays, media servers and user-operated infrastructure.

The latest GitHub release visible during the June 14, 2026 check was v1.5.5, published on March 11, 2026. The release notes mention fixes for image upload on Windows and Linux, faster and more reliable image and voice upload, default Blossom/Originless fallback, avatar fallback, an Isar database crash fix, one-tap cache and cookie clearing, desktop compatibility fixes, FileDrop as the default file server, removal of the 0xchat-core submodule and Docker build support.

That release trail matters because 0xChat is not only a whitepaper-style idea. It is a shipping Flutter app with app-store distribution, release notes, desktop fixes and ongoing infrastructure changes. When you evaluate it, use the same discipline you would use for any serious messenger: check the latest release, the open issues, the app-store version on your device and the exact build source if you install outside a store.

Login and account control

0xChat uses Nostr identity rather than phone-number or email registration. The organization profile says a user needs a Nostr account and must safeguard the `nsec` key because that key controls the account and data. That is the Nostr promise and the Nostr burden in one sentence.

For users coming from Telegram, Signal or WhatsApp, this is the first operational difference. There is no platform account recovery team that can reset a Nostr private key. If you paste your secret key into an unsafe place, lose it, or use it on a compromised device, the app cannot make that key safe again. If you lose local app state, some encrypted chat history may not be recoverable even if your public identity still exists.

The good side is portability. A Nostr account can be used across compatible clients, and 0xChat explicitly positions itself as compatible with the broader protocol. DMs can be carried across clients when the DM format is supported. The same public key can appear in other clients without needing a phone-number import.

The practical advice is simple: use a test key first, then decide whether to log in with a long-lived identity. If you use a hardware signer, Amber, nsec.app, Aegis or another NIP-46-capable remote signer path, verify which flows 0xChat supports on your platform before using it for daily conversations.

DM modes are the core privacy question

0xChat supports more than one direct-message model. The organization profile describes NIP-04 compatibility, gift-wrapped DMs and Secret Chat. OpenSats describes the same stack: older NIP-04 encrypted messages, sealed-sender and gift-wrapped formats from NIP-17 and NIP-59, and a Secret Chat mode.

NIP-04 is the old compatibility layer. It encrypts message content, but it leaves too much metadata visible for a modern private messenger expectation. 0xChat says it does not recommend NIP-04 as the default even though it remains useful for interoperability with older clients. That is a sensible position: compatibility should not be confused with best available privacy.

Gift-wrapped DMs are the main modern path. NIP-17 defines private direct messages, NIP-59 defines gift wrap, and NIP-44 supplies the versioned encryption used in many newer Nostr private-message flows. The goal is not only to encrypt the content but to reduce sender and timing metadata visible to ordinary relay observers.

A reader should not treat every 0xChat message as equally private. Ask which DM mode is active, whether the recipient's client supports the same mode, whether the conversation is synced across devices, which relays are used and what happens if one side falls back to an older format. The privacy level is a property of the conversation path, not just the app name.

Secret Chat raises the stakes

Secret Chat is 0xChat's higher-sensitivity mode. The 0xchat-core Secret Chat document describes a beta feature that uses NIP-44 encryption, NIP-59 wrapping, a NIP-101 alias-key exchange, locally computed shared keys, periodic key updates, screenshot detection and the option to send secure-chat messages through a specific agreed relay.

The reason for this extra machinery is forward secrecy. Gift-wrapped DMs reduce metadata leakage, but if a user's main private key is later compromised, old messages may still be at risk depending on the design and key material involved. Secret Chat attempts to create session-specific keys so that compromise of one key does not trivially expose every historical conversation.

The tradeoff is recovery. The Secret Chat document is blunt: the shared key for each secure chat session is stored locally, and if the app is uninstalled or the device is changed, secure chat history becomes irretrievable. The organization profile says the same thing in reader terms: if you need recovery on a different Nostr client or new device, use default gift-wrapped DMs; if you need more confidential chat, Secret Chat requires consent and local database backup discipline.

So Secret Chat is not the mode you turn on casually because it sounds safer. It is a mode for conversations where forward secrecy matters and you accept local-history fragility. Before relying on it, create a test conversation, back up the local database according to the app's instructions, move devices only after testing restore behavior and assume that screenshots and device compromise remain outside what a protocol can fully solve.

Private groups and relay groups are different

0xChat has more than one group concept. Its organization profile describes private groups built on NIP-17-style gift wrapping and relay groups built on NIP-29. These are not the same feature with two labels. They have different privacy, scale and administration properties.

Private groups encrypt each group message for group members. The project says it does not use a shared group private key; instead, each message is individually encrypted and sent to members. That improves member-specific privacy properties, but it does not scale endlessly. The profile says 0xChat's multi-threaded approach works well for private groups below roughly 100 members.

NIP-29 relay groups are the public or closed group model for larger communities. NIP-29 defines relay-managed groups that can be open or restricted, with group owners and administrators managing permissions, membership and group notes. OpenSats says 0xChat was the first Nostr client to ship NIP-29 relay-managed groups.

The key warning is content privacy. The 0xChat profile says relay group messages are not encrypted and recommends private groups when content privacy is needed. That should be prominent in any user decision. NIP-29 is useful for community coordination and interoperable group structure; it is not a private-room guarantee by itself.

Open channels and public conversation

0xChat also supports open channels. The organization profile frames channels as public spaces compatible with other Nostr clients, visible to anyone and intended to make chat more social. The App Store and Google Play pages describe a similar public-channel layer beside encrypted chats and contacts.

This gives 0xChat a useful middle position. It can feel like a messenger, but it is not sealed off from the rest of Nostr. A user can have direct conversations, groups and public channel participation without opening a separate social-timeline app for every interaction.

The risk is expectation drift. In a chat app, users often assume the thing in front of them is a room. On Nostr, a public channel may be represented by events distributed through relays and readable by other clients. If you are discussing something sensitive, make sure you know whether you are in a private DM, a private group, a relay group or a public channel.

A good first-week test is to send only harmless messages while you learn the icons, labels and delivery behavior. Check which conversations appear in another Nostr client. Check which channels are public. Confirm whether deleting a message is a local action, a Nostr deletion request, or not meaningful for the recipient's stored copy.

Calls ride beside Nostr

0xChat includes end-to-end encrypted audio and video calls between contacts. The organization profile says signaling communication goes through Nostr relays using a NIP-100-style WebRTC proposal, while the actual audio and video call path is facilitated through ICE servers. OpenSats adds the product detail: calls ring and show up in the call log like native phone calls on iOS and Android.

That architecture is worth spelling out. Nostr relays can coordinate call setup, but they do not magically turn into a full media network. WebRTC still needs connectivity negotiation, relay-like infrastructure in some network situations and careful implementation. The app lets users select their own relay and ICE services if they want more control.

The privacy boundary is therefore layered. The message that starts the call, the relay used for signaling, the ICE path, the selected media server or TURN service, the mobile operating system and push notification path may all matter. A user who needs high assurance should not evaluate calls only by the phrase end-to-end encrypted.

For ordinary calls, the feature can be very practical. For sensitive calls, test with a trusted contact, inspect the service settings, understand whether you are using default infrastructure or your own, and assume call metadata can be more revealing than the encrypted media content itself.

Push notifications are a real privacy surface

Modern messaging apps need notifications, and Nostr complicates that because relays do not operate like a single centralized push service. The 0xChat profile describes a push-notification approach where configuration is set up through DM messages to a push server, which then forwards notifications to the relevant distributor.

The profile also says the latest Android version integrated UnifiedPush with an embedded FCM distributor and allows users to select a preferred distributor in settings. That is a meaningful product detail because it gives users some control over the notification path, especially on Android.

Push is still a metadata-sensitive area. Even when message contents are encrypted, a push path can reveal timing, sender/recipient relationships, device identifiers or notification categories if implemented carelessly. This is not a unique 0xChat problem; it is a recurring secure-messenger problem. But it belongs in the evaluation because 0xChat is a messenger people may use daily.

If notifications matter to you, test them deliberately. Check whether previews reveal content. Check Android distributor settings. Check whether disabling push breaks only convenience or also message delivery assumptions. If you use a threat model where timing and contact metadata matter, notifications deserve as much review as encryption settings.

Payments are built in, not central custody

0xChat includes payment features, but they should be read precisely. The organization profile says Lightning payments are integrated through a Cashu wallet, using Lightning for ecash deposits and withdrawals, and that ecash is stored locally so users can send ecash to friends and group members. OpenSats also mentions built-in Cashu wallet support, Lightning zaps and NWC balances and payments.

Cashu changes the custody conversation. Ecash can improve payment privacy and make small social payments feel smooth, but mint trust still matters. A Cashu token is not the same as an on-chain UTXO, and a mint can fail, censor redemption or disappear. The app can make payments convenient; it cannot remove the need to choose mints carefully and keep balances modest.

NWC support adds another path. NIP-47 defines how an app can ask a remote wallet to perform actions such as paying invoices or making invoices through encrypted Nostr events. If 0xChat shows NWC balances or payments, the user should ask which external wallet is connected, what permissions and budget were granted, which relays are used and how to revoke the connection.

The safest first use is small. Send a tiny Cashu payment, redeem it, withdraw, and confirm where the balance lives. If you connect an external wallet through NWC, create a dedicated connection with a low budget and revoke it after testing. A messenger payment button should never be treated as harmless just because the amounts are small by default.

Remote signing and NApps

OpenSats notes that 0xChat supports NIP-46 remote signing with tools such as Amber, nsec.app, Aegis and Nowser. That matters because private-key handling is one of the highest-risk parts of Nostr app use. A messenger that can work with a remote signer gives careful users a route away from pasting a long-lived secret key into every app.

The v1.5 release trail also points to the app's Discover tab and NApps. A Nostr app that embeds or launches Nostr web apps needs a signing bridge, and the 0xChat release notes mention NIP-07-style authorization for seamless access to Nostr web apps. That can be useful, but it is also a permissions surface.

The reader should treat embedded NApps the same way they treat browser extensions and wallet connections: useful when permissioned narrowly, risky when treated as invisible plumbing. Ask what an embedded app can request, which key signs, whether approval is shown, and how the approval can be revoked.

This is one of the reasons 0xChat is more ambitious than a narrow DM client. It wants to be a messaging home, a social contact surface, a wallet-adjacent tool and a launch point for other Nostr apps. That breadth is attractive, but every added surface needs user-visible permission habits.

Tor, media and storage choices

OpenSats says 0xChat includes built-in Tor through Arti for onion relays and Cashu mints. That is valuable for users who want to reach infrastructure without exposing ordinary network paths. It also requires realistic expectations: Tor can improve network privacy, but it does not hide everything from a device, app, relay or mint that has other metadata.

Media handling is another practical layer. The v1.5.5 release notes mention Blossom/Originless defaults and auto-switching when a user-specified server is down or unavailable. The main README recommends self-hosting Originless for reliable media hosting because Nostr servers are heavily spammed. This tells you how the app thinks: relays and media storage are separate operational questions.

For users, that means photos, files and voice notes may travel through infrastructure that is not the same as the encrypted-message payload. A message can be encrypted while a media server, file metadata or link preview still has its own risk profile. The release notes show active work on uploads and fallback, but fallback also means more than one service may be involved.

If you use 0xChat for sensitive files, test where uploads go, whether you can choose a server, how deletion behaves, whether files are encrypted before upload, and whether recipients can still fetch old media after you change servers. Messaging privacy is never only text encryption.

XChat is not the same app

The 0xChat Nostr profile and OpenSats page both discuss a second app called XChat, formerly 0xChat Lite. This matters because search results, social posts and app-store notes can blur the names. 0xChat and XChat should not be treated as interchangeable products.

The project profile explains the split in user terms. 0xChat leans toward open Nostr private chats where anyone can message you and conversations can sync across devices and clients. XChat focuses on a simpler model around MLS-based circles. OpenSats says 0xChat focuses on NIP-17 DMs and NIP-29 groups, while XChat focuses on MLS-based Circles.

That difference changes interoperability. A NIP-17 conversation can interoperate with other clients that implement the same DM model. An MLS-based group model may have different compatibility, recovery and membership properties. If a friend says they use 0xChat, confirm which app they mean before debugging message delivery.

For this page, the route is 0xChat: the main chat-first Nostr client at 0xchat.com and the `0xchat-app-main` repository. XChat is useful context, especially when comparing Nostr private messaging futures, but it should get its own evaluation if it becomes part of the app map.

Interoperability is useful but uneven

OpenSats says 0xChat users can carry DM threads with people on Amethyst, Damus, Coop, Flotilla and noStrudel because the relevant formats are shared across clients. That is the promise of Nostr messaging: your conversation is not supposed to be trapped behind one company's server.

The reality is more uneven. Interoperability depends on the DM format, relay selection, contact lists, gift-wrap support, key management, device sync, notification behavior and the receiving client's implementation details. NIP support tables are helpful, but they do not replace a real test with the person you want to message.

Groups are even more nuanced. NIP-29 relay groups can be interoperable when clients and relays implement the same expectations, but private groups built through per-member encrypted messages may have more client-specific behavior. Secret Chat is explicitly a 0xChat-specific extension around NIP-101, so do not expect every Nostr client to read it.

Treat interoperability as a claim to verify, not a slogan. Send a test message from 0xChat to the other client, reply from the other client, restart both apps, switch networks, add a second device and check whether the conversation still appears correctly. That is the boring test that prevents real confusion later.

How to test 0xChat safely

Begin with a low-risk identity. Install 0xChat from the official site, the iOS App Store, Google Play, TestFlight or the GitHub release channel you intentionally chose. Create or import a test Nostr key first. Confirm backup and export behavior before using a long-term identity.

Next test message modes. Send a normal direct message to a trusted contact. Confirm whether it is NIP-17/gift-wrapped or an older compatibility path. Try another compatible client. Then test Secret Chat separately, with the understanding that local database loss can mean history loss. Do not learn this with your most important conversation.

Then test groups and channels. Create a small private group, send a few messages, add and remove a member, and see what old members can still read. Join or create a NIP-29 group and remember that it is not encrypted. Open a public channel and confirm how visible messages are in other clients.

Finally test payments and calls with tiny stakes. Send a small Cashu payment, receive one, withdraw if supported and check the mint path. If you connect NWC, use a dedicated low-limit connection. Make a short call, inspect media and relay settings, then decide whether the defaults are acceptable for the conversations you actually intend to have.

Risks to keep in view

The first risk is key custody. A Nostr messenger can feel like a normal chat app, but account control still flows from private keys and signer permissions. Losing an `nsec`, exposing it to an unsafe device or granting broad signing permissions to embedded apps can have consequences beyond 0xChat.

The second risk is mode confusion. NIP-04, NIP-17, Secret Chat, private groups, NIP-29 groups, public channels, calls and NApps do not share one privacy model. Users can make safe choices only if they can tell which mode they are in. A polished UI should reduce confusion, but the user still needs to know the boundaries.

The third risk is infrastructure dependence. Relays, media servers, ICE services, push distributors, Cashu mints, NWC relays and external wallets can all affect behavior. Decentralized does not mean infrastructure-free. It means the infrastructure can be chosen, replaced and verified if the user has the tools and patience.

The fourth risk is recovery. Secret Chat history may be intentionally irrecoverable after device loss without a backup. Cashu tokens may depend on local storage and mint availability. Desktop builds may behave differently from mobile builds. Before using 0xChat as a primary messenger, test recovery and export behavior with low-stakes data.

Who should use it

0xChat is a strong candidate for users who want Nostr private messaging to feel like a real messenger rather than a hidden feature. It is especially interesting for people who want encrypted DMs, small groups, channels, calls, Cashu payments and cross-platform clients under one project umbrella.

It is also a useful testing ground for builders. If you work on NIP-17, NIP-29, NIP-44, NIP-59, NIP-46, NIP-47, Cashu, Nostr calls, push notifications or Nostr app launch flows, 0xChat gives you a concrete product where those standards meet actual user friction.

It is not the right first app for every Nostr newcomer. A person who only wants to read public notes may be happier in a social-feed client. A person who needs the simplest possible secure messenger may prefer a narrower app with fewer surfaces. A person who cannot manage keys or backups should experiment before using it for meaningful conversations.

The best fit is someone who wants chat to be the center of their Nostr use and is willing to learn the difference between chat modes. 0xChat rewards that attention. It gives you more than DMs, but it asks you to understand more than a single send button.

The bottom line

0xChat is one of the more serious attempts to make Nostr feel like a messenger. It has an active open-source codebase, official mobile and desktop paths, current release notes, OpenSats support, NIP-29 history, modern DM support, Secret Chat, calls, push, Cashu and NWC-adjacent payments.

The strongest reason to try it is not that it checks many protocol boxes. The reason is that those boxes are tied to a recognizable user job: talking to people privately and in groups without moving every relationship back into a centralized platform account.

The strongest reason to be careful is the same breadth. A chat app that handles keys, encrypted messages, groups, calls, media, notifications, payments and embedded Nostr apps has many trust edges. Some are protocol edges. Some are local-device edges. Some are infrastructure edges.

Use 0xChat deliberately. Start with a test key, learn the DM modes, keep Cashu and NWC amounts tiny, understand group privacy, choose call and media infrastructure consciously, and back up what the app says must be backed up. If you do that, 0xChat becomes a practical way to see what Nostr messaging can feel like when chat is the product rather than an afterthought.

Useful Nostr context

These pages help readers compare encrypted chat surfaces and key-handling risk.

Sources worth opening

Start with the official site, GitHub organization, main app README, release notes, OpenSats project page, app-store pages and the Nostr profile. Then read the Secret Chat document, nostr-dart NIP list, NIP-17, NIP-29, NIP-44, NIP-59, NIP-47, NIP-46 and the Cashu references before using the app for sensitive chats or payments.

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

Keep the product map close.

Search the wider app shelf when you want another client, tool, protocol reference or source trail beside this page.

AppsKeep exploring AppsProduct pathsProducts, tools, communities and source trails.Browse apps
Apps contribution visual cue 1
Apps contribution visual cue 2
Apps contribution visual cue 3
Apps contribution visual cue 4
Apps contribution 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.