Experimental project running Session messenger in a web browser online https://session-web.pages.dev
Find a file
2025-07-16 10:31:15 +02:00
protos Successfully implemented messages retrieving 2024-04-29 23:52:01 +04:00
proxy Fix ons 2024-05-06 00:05:13 +04:00
public Add i18nLoader suspense component 2024-05-02 05:44:22 +04:00
src Update conversation displayName with profile's display name upon receiving new message 2024-05-02 06:21:18 +04:00
types Add symlink to types in proxy 2024-05-02 04:47:45 +04:00
.env.sample Add messages storing 2024-05-01 23:34:46 +04:00
.eslintrc.cjs Add proxy 2024-04-29 17:43:34 +04:00
.gitignore Add messages storing 2024-05-01 23:34:46 +04:00
bun.lockb Run bun install --force for cloudflare pages 2024-05-02 05:09:53 +04:00
components.json Add resizable left menu 2024-04-30 21:25:59 +04:00
index.html Add final touches 2024-05-02 04:25:40 +04:00
package.json Add protobuf execution at build command 2024-05-02 05:16:43 +04:00
postcss.config.js Login & sign up page 2024-04-30 20:02:40 +04:00
README.md Update README.md 2025-07-16 10:31:15 +02:00
tailwind.config.js Add message bubbles and date time separators 2024-05-01 18:13:21 +04:00
tsconfig.json Add IndexedDB shim for Tor users 2024-05-02 03:43:41 +04:00
tsconfig.node.json The End 2024-04-17 14:00:40 +04:00
vite.config.ts Implement account switching 2024-04-30 22:22:50 +04:00

Session Web

Note

The project is archived and I no longer contribute to Session. You might want to check out this fork by gongchandang49

Experimental project running Session messenger in browser.

Screenshot

Visit Session Web: session-web.pages.dev

Works in Tor! 99% client-side (still requires proxy to swarms though). All encryption and private keys never leave browser.

This is rather a technical challenge for me, rather than a stable client

Important

I'm looking for a job! Interested in hiring me? Visit cv.hloth.dev to review my resume & CV.

  • Receiving messages
  • Sending messages
    • Attachments support
  • Clearing network
  • Conversations pinning
  • Closed groups
  • Open groups (communities)
  • Blocked list
  • Profile editing
  • Searching conversations
  • Searching in conversations
  • Optimizations
    • Partial conversations loading
  • Multiaccount
  • Localization
    • English
    • Russian
    • Option to change UI language
  • PWA
    • Offline support
    • Updates
  • Push notifications
    • Notifications settings
  • Calls
  • Custom proxy server support
  • Direct nodes connection support
    • Onion routing

How it works?

All your confidential data (private keys, decrypted messages etc) never left your device. We need a proxy server though for 2 reasons:

  1. Every node has its own self-signed SSL certificate and browsers reject connection to these, unless they are added to system level
  2. Nodes do not send CORS headers, which prevent reading responses

Proxy server is only used to route your encrypted JSON_RPC requests to chosen node.

Source code of proxy server is at proxy directory and is written in Bun.

Be aware that I didn't care about best practices when writing this code, it does not use any security measures implemented in official clients, it does not prevent you from any kind of malicious attack, for example MITM. Backend requests to nodes aren't onion routed. SSL certificate pinning is not implemented (bun does not support this yet). This client does not support any cool features and is not maintained for security vulnerabilities found in code or dependencies.

Runs on Vite. Backend is mostly written from scratch using parts of code from Session Desktop client