Skip to Content

View original on GitHub 

foreverVM 

GitHub Repo stars Chat on Discord

repoversion
cli npm
sdk npm

foreverVM provides an API for running arbitrary, stateful Python code securely.

The core concepts in foreverVM are machines and instructions.

Machines represent a stateful Python process. You interact with a machine by running instructions (Python statements and expressions) on it, and receiving the results. A machine processes one instruction at a time.

Getting started

You will need an API token (if you need one, reach out to paul@jamsocket.com).

The easiest way to try out foreverVM is using the CLI. First, you will need to log in:

npx forevervm login

Once logged in, you can open a REPL interface with a new machine:

npx forevervm repl

When foreverVM starts your machine, it gives it an ID that you can later use to reconnect to it. You can reconnect to a machine like this:

npx forevervm repl [machine_name]

You can list your machines (in reverse order of creation) like this:

npx forevervm machine list

You don’t need to terminate machines β€” foreverVM will automatically swap them from memory to disk when they are idle, and then automatically swap them back when needed. This is what allows foreverVM to run repls β€œforever”.

Using the API

import { ForeverVM } from '@forevervm/sdk' const token = process.env.FOREVERVM_TOKEN if (!token) { throw new Error('FOREVERVM_TOKEN is not set') } // Initialize foreverVM const fvm = new ForeverVM({ token }) // Connect to a new machine. const repl = fvm.repl() // Execute some code let execResult = repl.exec('4 + 4') // Get the result console.log('result:', await execResult.result) // We can also print stdout and stderr execResult = repl.exec('for i in range(10):\n print(i)') for await (const output of execResult.output) { console.log(output.stream, output.data) } process.exit(0)
Last updated on