Jamsocket
jamsocket.com
Jamsocket
@jamsocket.com
Company updates from Jamsocket, the platform for scaling sync engines.
The cool thing about using ForeverVM with LLMs is that you can create diagrams almost as quickly as you can think of them.
March 25, 2025 at 3:03 PM
Code execution is the ultimate tool call.

Here we're using ForeverVM with boto3 to visualize our AWS infrastructure without needing specialized tools.
March 25, 2025 at 3:02 PM
Had a blast hosting MCP Lightning talks SF with Cloudflare! Thanks to everyone who spoke.

Doing it again next week in NYC.
March 20, 2025 at 12:02 AM
Code execution is the ultimate tool call. Once an LLM can run its own code, it can run loops, access APIs, and extract the result.

In this video, Windsurf uses ForeverVM to make HTTP calls to check a list of Python packages against the latest PyPi version.
February 24, 2025 at 6:01 PM
Because ForeverVM keeps REPLs alive forever, you can ask Claude unlimited queries about a dataset and Claude can always access the same context.
February 20, 2025 at 6:01 PM
Give Claude the power of a Python REPL. Perform complex data analysis or draw a mandlebrot with ASCII characters.

Install ForeverVM as a tool on Claude Desktop: https://forevervm-com.vercel.app/docs/guides/forevervm-mcp-server/
February 20, 2025 at 3:01 PM
Signups for ForeverVM are now open! If you have node.js or uv, you can sign up from your terminal with a one-liner.

npx forevervm signup

Or read our new docs for more: https://forevervm.com/docs
February 14, 2025 at 4:16 PM
Jamsocket is now officially SOC 2 Type II compliant!

Whether you use our managed platform or bring-your-own-cloud, rest easy knowing that we put security and reliability first.
February 12, 2025 at 6:52 PM
Giving an LLM a code sandbox massively increases its capabilities, but managing VM lifecycles is a pain.

Introducing foreverVM, a Python REPL-as-a-service. Under the hood, we swap between memory and durable storage. To you (and your agent) it acts like an always-on REPL.

See more at forevervm.com
January 29, 2025 at 5:52 PM
Y-Sweet now supports Read-Only Tokens for use cases where a client should only have read access to a document.

See docs at https://docs.jamsocket.com/y-sweet/features/read-only-tokens
January 24, 2025 at 7:00 PM
New demo drop! https://demos.y-sweet.dev/monaco

Collaborate in code with Monaco and Y-Sweet
January 21, 2025 at 4:00 AM
The trick is a technique called fractional indexing, in which indices are fractions rather than integers. Can you solve the exercise and implement it?

Give it a shot at https://learn.yjs.dev/lessons/03-todo-list/!
January 17, 2025 at 5:01 PM
Instead of keeping the todos in an array, try keeping them in a map.

We can give each todo an index property. The ordered list of todos is an array of the map values sorted by the index property. To move a todo, simply set a new index!

It sounds good in theory, but…
January 17, 2025 at 5:01 PM
Here’s a curious fact about Yjs. Once you add a shared type to a document, it can never be moved. You can change what it contains and you can delete it, but you can’t move it from one place to another.

That means moving array elements really means deleting and re-adding them.
January 17, 2025 at 5:01 PM
Just like before, though, things can get a little wonky when we start adding latency…
January 17, 2025 at 5:00 PM
In Learn Yjs lesson 3, we look at another classic app: the todo list!

This demo allows each client to reorder the todos and toggle their checkboxes.
January 17, 2025 at 5:00 PM
Can you solve the exercise and implement a counter that shows the correct count, even when clients update it concurrently?

Give it a shot at https://learn.yjs.dev/lessons/02-counter/!
January 16, 2025 at 5:01 PM
Not so fast! This demo happens to be working because updates are synchronous. Every time the button gets clicked, the other client instantly receives the update.

When we add a little latency, the counter breaks!
January 16, 2025 at 5:01 PM
In Learn Yjs lesson 2, we look at the “hello world” of JavaScript framework demos: the humble click counter.

Seems pretty simple, right?
January 16, 2025 at 5:00 PM
Can you solve the exercise and implement a function that returns whether all the keys in a map are true?

Give it a shot at https://learn.yjs.dev/lessons/01-introduction/!
January 15, 2025 at 8:22 PM
Like JavaScript’s Map object, a Yjs map holds key/value pairs.

Here you can see how Yjs syncs the values between two maps, with latency added to simulate a network connection.
January 15, 2025 at 8:22 PM
A Yjs document is like a container for your state. To read and update that state, Yjs has a feature called shared types. They’re similar to JavaScript data structures such as Map — except shared types automatically sync between clients.

All in all, there are six shared types:
January 15, 2025 at 8:22 PM
Yjs is a CRDT that stores its state in documents and syncs them between clients.

Here you can see how Yjs syncs documents between clients. When one client moves a slider, the other client automatically sees the updated value.
January 15, 2025 at 8:22 PM
Something cool coming tomorrow 👀
January 13, 2025 at 8:19 PM
Easily build collaborative apps like Google Docs using our new Y-Sweet x InstantDB starter kit: https://buff.ly/40nbfbe
January 7, 2025 at 5:00 PM