Sliver-script is a TypeScript/JavaScript client library for Sliver, it can be used to automate any operator interaction with Sliver. Sliver-script uses existing Sliver client configuration files and connects to servers using gRPC over Mutual-TLS. It also provides RxJS abstractions for easy interactions with real-time components.
This library targets modern Sliver protobuf/gRPC APIs and provides a strongly-typed TypeScript-first client.
Node v24 or later is required for this package, and it can be installed via npm:
npm install sliver-script
import{SliverClient,ParseConfigFile}from'sliver-script'(asyncfunction(){constconfig=awaitParseConfigFile('./localhost.cfg')constclient=newSliverClient(config)awaitclient.connect()constversion=awaitclient.getVersion()console.log(version)constsessions=awaitclient.sessions()console.log(`Sessions: ${sessions.length}`)awaitclient.disconnect()})()import{SliverClient,ParseConfigFile}from'sliver-script'(asyncfunction(){constconfig=awaitParseConfigFile('./localhost.cfg')constclient=newSliverClient(config)awaitclient.connect()client.event$.subscribe((event)=>{console.log(event)})})()import{SliverClient,ParseConfigFile}from'sliver-script'(asyncfunction(){constconfig=awaitParseConfigFile('./localhost.cfg')constclient=newSliverClient(config);awaitclient.connect()console.log('Waiting for new sessions ...')client.session$.subscribe(async(event)=>{console.log(`New session #${event.Session.ID}!`)constsession=client.interactSession(event.Session.ID)constls=awaitsession.ls('.')console.log(`Path: ${ls.Path}`)ls.Files.forEach(file=>{console.log(`Name: ${file.Name} (Size: ${file.Size})`)})})})()constsliver=require('sliver-script')(asyncfunction(){constconfig=awaitsliver.ParseConfigFile('./localhost.cfg')constclient=newsliver.SliverClient(config)awaitclient.connect()console.log('Waiting for new sessions ...')client.session$.subscribe(async(event)=>{console.log(`New session #${event.Session.ID}!`)constsession=client.interactSession(event.Session.ID)constls=awaitsession.ls('.')console.log(`Path: ${ls.Path}`)ls.Files.forEach(file=>{console.log(`Name: ${file.Name} (Size: ${file.Size})`)})})})()