Skip to content

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