MEMBRANE
BETA
What is Membrane?
Membrane is a hosted TypeScript runtime specifically designed to build personal automation tools and interact with APIs more easily.
FEATURES- Durable Programs ....................................................................................................0
- Cron Jobs and Timers ....................................................................................................1
- Built inside VS Code ....................................................................................................2
- The Graph ....................................................................................................3
- Graph-based Access Control ....................................................................................................4
- Observability ....................................................................................................5
- Instantanous Deploys ....................................................................................................6
- Step Debugger ....................................................................................................7
- Custom Exit Nodes ....................................................................................................8
- HTTP Endpoints ....................................................................................................9
- Open Source Drivers (APIs) ....................................................................................................10
- Code completion ....................................................................................................11
EXAMPLES
- SMS Reminders ....................................................................................................9
- Discord Weather Bot ....................................................................................................10
- Mailchimp Alerts ....................................................................................................11
- Follow Hacker News Users ....................................................................................................12
- Airtable changes to Email ....................................................................................................13
- Twitter Bot ....................................................................................................14
- HTMX Form ....................................................................................................15
- Github Weekly Report ....................................................................................................16
- Github Action Alert ....................................................................................................17
- Github Commits on Discord ....................................................................................................18
- Track HN Jobs in Google Sheets ....................................................................................................19
- Mailchimp to airtable ....................................................................................................20

example weekly report
Example of a Membrane program to generate a weekly report on issues, pull requests, and commits in a GitHub organization
Set up a cron-job that generates report every Friday.
New Google Doc
Find Issues & Pull Requests
Append Issue & PR Details
Search & Select Commits
Append details of commits
import { root, nodes, state } from "membrane";
export async function configure({ org }) {
state.org = org;
root.report.$cron(`0 0 17 ? * FRI`);
}
export async function report() {
const [weekAgo, now] = getDateRangeString();
const { org } = state;
const doc = await nodes.gdocs.documents.create({
title: `Last Week Report - ${now}`,
});
await doc.insertText({
text: `Weekly Report (${weekAgo} to ${now})`,
});
const issuesAndPr = await nodes.github.search
.issues({ q: `org:${org}+created:${weekAgo}..${now}` })
.$query(`{ items { html_url title created_at user {login}}}`);
await doc.insertText({ text: `Issues and Pull Requests:` });
for (let event of issuesAndPr.items!) {
await doc.insertText({
text: `${event.user!.login}: ${event.created_at!}`
});
await doc.insertLink({
text: `${event.title}`, url: event.html_url
});
}
const commits = await nodes.github.search
.commits({ q: `org:${org}+committer-date:${weekAgo}..${now}` })
.$query(`{ items { sha html_url message date author {login}}}`);
await doc.insertText({ text: `Commits Summary:` });
for (let event of commits.items!) {
await doc.insertBullet({
text: `${event.author!.login}: ${event.date!} - ` });
await doc.insertLink({
text: `${event.message!.replace(/g, "")}`,
url: event.html_url
});
}
const url = await doc.url;
console.log(`Report generated at ${url}`);
}
What is Membrane?
Membrane is a hosted TypeScript runtime specifically designed to build personal automation tools and interact with APIs more easily.
FEATURESEXAMPLES
Features Walkthrough
Communication
- 2023.08.20 Progress Update #3 Simpler function signatures, built-in Google auth.
- 2023.08.13 Progress Update #2 Windows support and OOM handling.
- 2023.07.30 Progress Update #1 Internal logging architecture, improved HTTP UI.
- 2023.07.14 Progress Update #0 Exit nodes and Program Replays.
Enter your email for occasional updates