HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
endojs
endo
JavaScript2021–2026
endojs / endo

endo

Endo is a distributed secure JavaScript sandbox, based on SES

15Distinct people
20Mentions
0Explicit recommenders
1.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Endo is a distributed secure JavaScript sandbox, based on SES

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 6:59:22 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year20 dated mentions

Observed mentions: 2021-11-06 07:48:05 UTC to 2026-08-20 03:58:10 UTC.

02468102021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 10 mentions; 0 submissions, 10 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20232024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC303
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC10010
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC202
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC110
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC312

What Hacker News says

1 sources
gulgdev·Mar 28, 2025Submission

Ask HN: A new approach to JavaScript sandboxing

Hello, HN! I wanted to share my thoughts about sandboxing and ask for an advice. I've been developing and researching JS sandboxes for several years now, because all existing solutions that I've found aren't the ones that I need. I am working on a project that allows devs to easily develop multiplayer web-games and host them for free. Som I need a sandbox that would both provide great security and good experience for developers. I've been using SES (https://github.com/endojs/endo/tree/master/packages/ses), but there's a problem in this approach: while it is very good for securing your application, it doesn't really provide a good developing experience because a lot of JS projects don't like being in such a restricted environment (SES freezes all globals and intrinsics). After doing some research, I've concluded that most of the web sandbo
Read the rest
xes use one of the following approaches: they either use a WebWorkers or sandboxed iframes. That sounds good but both approaches have their downsides. When you use WebWorkers, you can't really provide an API to a developer, because the only way you can communicate with a WebWorker is by using postMessage. While you could inject a host code that would wrap postMessage function to create some good-looking API, it isn't possible to make something advanced, because of the prototype injection. With iframes, you can inject your API safely into contentWindow, by wrapping it using iframe's realm intrinsics. But iframes can freeze the whole app, for example, by creating an infinite loop. There's also OOPIF but they have the same problem as WebWorkers. So, I came up with an idea that sort of combines the two approaches by creating a separate process with multiple realms in it. Sadly, there's no way to create a new ES realm in a WebWorker, so I'm bound to using OOPIFs. The current architecture is inspired by Electron's process model (https://www.electronjs.org/docs/latest/tutorial/process-model): the app that uses sandboxing creates a new process (box) and specifies a script that would be ran in that process (host script). That script can communicate with the main app and access a separate realm (user world) and inject it's API into it. However, while implementing this kind of sandbox, I came across one big downside: it's hard to deploy an app that uses this sandboxing method, because it requires the use of out-of-process iframes, which must be cross-origin to be places in a separate process. So, I can't, for example, create a demo on GH pages. And I wanted to ask, is there a way to create an out-of-process iframe without requiring the server to serve the HTML file from a different subdomain? I've looked into using ServiceWorkers with Origin-Agent-Cluster header, but it didn't really work. Thanks! P.S. This is my first post on HN, idk if this is the right place to ask
1 points · Open discussion

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.