session.community

A collection of tools, websites and community creations directories from hloth.dev

Skip to «ONS Registry»

ONS Registry

Open OXEN Name System list, updated automatically from the blockchain.

Explore ONS records in OXEN blockchain, filter by owner, lookup by partial text query for unhashed names, view estimated money spent on all records by specified owner. Local-first, fully mobile-optimized. Purchase system allows you to buy any ONS name in 30 seconds without having to own oxen wallet and buying crypto — just type in name you want, pay money and it will be automatically pushed to blockchain along with sending you wallet-owner mnemonic to specified email (if you specified it).

  • Service Worker
    • Caches all assets for offline visits
    • Downloads whole ONS db (2mb) if user is connected to Wi-Fi, has "saveData" set to false in device settings and has fast connection speed. Then uses this database when user visits ONS Registry being offline. Updates are based on E-Tag header.
    • Otherwise, falls back to remote searches. In any case, any new found hash matches are cached to server using Background Sync web interface
  • For hashing and encryption, I'm using WebAssembly on frontend and crypto module in Node.js on backend
  • For storage I'm using Cache API web interface on frontend and sqlite on backend
  • Fully localized for two languages using next-i18next
  • Integrated with YooKassa API for payments and shell for communication with oxen daemon.
  • Automatically fetches, parses and analyzes new blockchain transactions via JsonRPC api connected to public node
  • Uses CoinGecko API and OXEN coin historical price data to estimate how much money owner spent on their records
  • Uses custom Monero base58 encoding to convert between ed25519 keypairs and OXEN wallet addresses
  • Accessibility and fancy design built with @shadcn/ui
  • No ads and bullshit. Free API for everyone with API docs
Skip to «Session Bots Directory»
Remix (my first Remix project), @shadcn/ui; Fastify, Node.js; Redis

Session Bots Directory

A place to discover bots created by Session messenger developers community.

  • Free and opensource
  • No personal info is collected for signups
  • Adding new bot is as easy as writing a little info about it and verifying response from bot to make sure you're the real author of it — it can be done in less than 60 seconds
  • All moderation is automatically done by GPT. It does not allow any illegal topics and any visitor can report any bot anytime with instant notification to me for additional review
  • All bots are automatically checked for uptime using custom checker built on top of my free&opensource bot framework for Session
Skip to «Bunsogs»

Bunsogs

Session Open Group Server implementation written in JavaScript using bun.sh.

Aims to be very fast, flexible and extensible. Drop-in replacement for pysogs — works with the same database schema. Bunsogs support everything pysogs has, but it's better.

  • Plugins (antispam, anticsam, DM greetings)
  • Bot API
  • GUI CLI
  • Per-room rate limit settings
  • Per-room old messages pruning settings
  • Only allow certain attachments (e.g. no images, only voice)
  • Global permissions overrides

Can be used on any OS where Bun runs (any Linux, Windows, MacOS)

Skip to «Session.js»
Bun, TypeScript, SQLite

Session.js

JavaScript library for programmatic use of the Session messenger

Supports server and browser environment with built-in proxy network module. Shipped with TypeScript definitions. Tested with bun:test. Written with blazingly fast Bun

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!
Skip to «Session Native»

Session Native

Opensource Session client written with performance, design and user experience in mind.

Uses native Swift and other native technologies of macOS and aims to run with latest technologies rather to be compatible with all devices, thus it requires at least macOS 14.0 or later.

Isn't entirely native, as its backend is written with my Session.js crossplatform Session framework. It doesn't matter though, because frontend must be reactive and backend can be anything. You won't experience any lags, because data is stored/retrieved using native SwiftData. Moreover, Session.js is written in Bun, which is very fast and comparable to Rust or even low-level languages.

No onion routing for now, but you can setup onion routing on your network side yourself, also proxy settings are available

While macOS protects applications data good enough, please be aware that app database is not encrypted, and thus can be accessed if malware has unrestricted access to your filesystem and you allowed it to read apps storage. Mnemonics are stored in keychain, which should make their retrieval harder for malicious actors.

Skip to «Session Vanity ID»

Session Vanity ID

Simple, fast and flexible Session ID vanity generator tool.

This tool bruteforces mnemonics and looks for Session IDs matching your specific pattern. The website works 100% clientside and allows you to specify how many workers you want to spawn.

I recommend inputting 4 to 5 characters if you have a decent PC.

You can configure how many workers to spawn (from 1 to Math.ceil(navigator.hardwareConcurrency / 3)) and that directly influences how many IDs per second your PC will bruteforce. But most likely your PC will limit threads to about 60%-80% of maximum allowed threads to spawn. Basically, setting 10 workers will likely get you same results as settings 7 workers.

Number of characters you inputted DOES NOT practically affect bruteforce speed. So type anything, look at "XXXX IDs/s" and compare that number to this table (I take 30k ids/s as average):

Characters after "05"Time for 50% probability (seconds)Time for 25% probability (seconds)
10.000360.00015
20.00590.0025
30.09460.0393
41.51420.6284
524.22710.055
6387.636160.883
76202 (1.7 hours)2574
899234 (27 hours)41186
91587757 (18 days)658978
1025404112 (294 days)10543659
Skip to «Apple Watch client»

Apple Watch client

Unofficial Session messenger client for Apple Watch, targeting watch OS 10.

Supported features:

  • Send & receive messages
  • ONS resolving

Signing in requires a server with hosted companion website. In simple terms, user is redirected there to input their mnemonic on any device they find comfortable and secure. Mnemonic is encrypted locally and stored on server shortly for watches to sync into its storage. Read in details in website's repository.

Skip to «Session Web»

Session Web

Experimental project running Session messenger in a web browser online.

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

  • Sending messages (no attachments support)
  • Receiving messages
  • Multiaccount
  • Localization in 2 languages

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.