Programs
Membrane is similar to an operating system; you deploy programs to the Membrane engine, and it takes care of persistence, communication, logging, resources, etc.
A Membrane program is TypeScript or JavaScript code that runs on our cloud runtime. Unlike traditional serverless runtimes, it is stateful and includes multiple handlers instead of a single function.
A Membrane program consists of:
- Code: TypeScript/JavaScript functions for fields, actions and events
- Schema: nodes exposed in the graph—the program’s own API
- Connections: other programs—nodes—used by the program
- Implicit Handlers: optional functions, e.g. to receive HTTP requests
In Membrane, you build custom functionality (bots, workflows, etc.) by writing programs. Programs can reference each other’s nodes to create powerful abstractions.
Code organization
A Membrane program contains at least three files:
Directoryyour-program/
- index.ts
- memconfig.json
- memconfig.lock
index.ts|js
: contains core logic and exports resolver functionsmemconfig.json
: describes your schema with all fields, actions, events, and connections. It’s automatically generated, so you should never have to edit this file by handmemconfig.lock
: tracks versions of nodes in your graph. It’s also automatically generated, and you should never have to edit it manually
Your program’s directory may also include a README.md
, package.json
with npm dependencies, .git
, and whatever other helpers and structure you’d like.
Stopping and deleting programs
To stop a running program, right click the program in the Membrane Navigator and select Kill
from the dropdown menu. A program must be stopped in order to delete it.
To delete a program, right click the program’s folder in your file explorer and select Delete
from the dropdown menu. Or, open the command palette (Cmd+Shift+P
on Mac) and type Membrane: Delete Program. A message will appear in the bottom bar of your editor upon deletion.