Home
Session.js is JavaScript library for programmatic usage of Session messenger by OXEN. Supports server and browser environment with built-in proxy network module. Shipped with TypeScript definitions. Tested with bun:test. It's aimed for Bun users — a modern runtime for JavaScript and alternative to Node.js. But it can also be used on most platforms and runtimes thanks to external modules system and platform-agnostic architecture with vanilla noble cryptography instead of WASM-compiled libsodium and bytebuffer.
Session.js allows you to create:
- Highly optimized Session bots (hundreds of bots in a single app)
- Custom Session clients (web-based and native with JS backend)
- Automation tools for Session
Features
- On-demand polling — you decide when to get new messages and whether instance should poll them (and poll settings like frequency) or work just for sending
- Per-instance storage and network settings — you can attach persistant storage to instance or use in-memory storage for throwaway one-time instances
- Session.js can be used in browser, keeping private keys on client-side and doing network requests on server-side. See this in action with my full-featured Session Web client!
Getting started
Jump to getting started page to start using Session.js!
Roadmap
- Messages
- Automatic snodes fetching
- Automatic swarms selection
- Manual snode/swarm control
- Data retrieving from swarms
- Messages polling
- Messages types
- Regular chat message
- Text
- Attachments
- Images
- Files
- Voice messages
- Quotes
- Web links previews
- Service messages
- Sync message
- Configuration message
- Uses legacy constructor for now
- Read message (ReadReceipt)
- Typing message
- Message request response
- Screenshot / media saved (DataExtraction)
- Delete message (Unsend)
- Call message
- Just event to display placeholder warning about unsupported feature
- Reactions
- Closed chats
- Open groups (SOGS)
- Expirable messages
- Calls
- Messages editing (SOGS)
- Profile editing
- Display name
- Avatar
- Syncing between devices
- ONS resolving
License
All code in Session.js (including any submodules) was written by Viktor Shchelochkov aka hloth and licensed under MIT license
Funding
You can donate here: hloth.dev/donate