# nolane-x/nolane-opencontainer architecture

> Architecture diagram of the GitHub repository nolane-x/nolane-opencontainer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nolane-x/nolane-opencontainer
- Repository: https://github.com/nolane-x/nolane-opencontainer

## Overview

OpenContainer is a browser-native Node/web development runtime. The main workflow is to boot the runtime, mount a workspace, resolve and install packages, then execute commands or modules in a bounded process; users can also publish previews and snapshot or export workspace state. The graph includes documented package, toolchain, browser-worker, and OPFS capabilities. Several package internals are unsampled, so their documented responsibilities are shown without guessing at call wiring.

Main entry points: [`packages/sdk/src/index.js`](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/sdk/src/index.js) (OpenContainer SDK), [`packages/package-env/src/index.js`](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/index.js) (Package Graph), [`packages/process/src/browser-guest-worker.js`](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/process/src/browser-guest-worker.js) (Browser Guest Worker), [`packages/vfs/src/index.js`](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/vfs/src/index.js) (Virtual Filesystem)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime Core"]
  node_sdk["OpenContainer SDK<br/>[index.js]"]
  node_kernel["Lifecycle Kernel<br/>[index.js]"]
  node_protocol["Errors and Protocol<br/>[index.js]"]
end

subgraph group_workspace["Workspace and Packages"]
  node_vfs["Virtual Filesystem<br/>[index.js]"]
  node_opfs[("OPFS Checkpoints<br/>[opfs-authority.js]")]
  node_packages["Package Graph<br/>[index.js]"]
  node_artifact["Artifact Authority"]
  node_resolver["Module Resolver<br/>[resolver.js]"]
  node_virtualmodules["Virtual Node Modules"]
  node_commonjs["CommonJS Loader<br/>[commonjs-loader.js]"]
  node_esm["Native ESM Publication"]
end

subgraph group_execution["Execution and Toolchain"]
  node_process["Process Supervisor<br/>[index.js]"]
  node_worker["Worker RPC Authority"]
  node_toolchain["Toolchain Profiles<br/>[index.js]"]
  node_wasm["WASM Artifact Manager"]
end

subgraph group_services["Runtime Services"]
  node_network["Network Authority<br/>[index.js]"]
  node_preview["Preview Authority<br/>[index.js]"]
  node_persistence["Snapshots and Export<br/>[index.js]"]
  node_resources["Resource Governor<br/>[index.js]"]
  node_diagnostics["Diagnostic Journal<br/>[index.js]"]
end

subgraph group_browser["Browser Integration"]
  node_guest["Browser Guest Worker"]
  node_guestentry["Guest Worker Entry"]
  node_sync["Synchronous RPC<br/>[sync-rpc.js]"]
end

node_developer(("Developer"))

node_developer -->|"boots runtime"| node_sdk
node_sdk -->|"boots"| node_kernel
node_sdk -->|"mounts files"| node_vfs
node_sdk -->|"spawns commands"| node_process
node_sdk -->|"binds package commands"| node_packages
node_sdk -->|"publishes preview"| node_preview
node_sdk --> node_network
node_sdk --> node_persistence
node_sdk --> node_resources
node_sdk --> node_diagnostics
node_sdk -->|"checks readiness"| node_kernel
node_packages -->|"reads and writes"| node_vfs
node_packages -->|"ingests artifacts"| node_artifact
node_artifact -->|"authorizes fetches"| node_network
node_packages -->|"resolves modules"| node_resolver
node_packages -->|"projects packages"| node_virtualmodules
node_resolver -->|"supports loading"| node_commonjs
node_resolver -->|"publishes modules"| node_esm
node_process -->|"governs processes"| node_resources
node_process -.->|"executes in browser"| node_guest
node_guest -->|"dispatches RPC"| node_worker
node_guest -->|"resolves dynamic imports"| node_esm
node_guest -->|"settles sync RPC"| node_sync
node_guestentry -->|"creates mailbox"| node_sync
node_guestentry -->|"resolves dynamic imports"| node_esm
node_toolchain -->|"verifies artifacts"| node_wasm
node_persistence -->|"snapshots and restores"| node_vfs
node_opfs -.->|"checkpoints and restores"| node_vfs
node_kernel -->|"records lifecycle"| node_diagnostics
node_worker -->|"records RPC"| node_diagnostics
node_guest -->|"records worker events"| node_diagnostics

click node_sdk "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/sdk/src/index.js"
click node_kernel "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/kernel/src/index.js"
click node_protocol "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/protocol/src/index.js"
click node_vfs "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/vfs/src/index.js"
click node_opfs "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/vfs/src/opfs-authority.js"
click node_packages "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/index.js"
click node_artifact "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/artifact-authority.js"
click node_resolver "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/resolver.js"
click node_virtualmodules "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/virtual-node-modules.js"
click node_commonjs "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/commonjs-loader.js"
click node_esm "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/native-esm-publication.js"
click node_network "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/network/src/index.js"
click node_process "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/process/src/index.js"
click node_worker "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/process/src/worker-authority.js"
click node_guest "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/process/src/browser-guest-worker.js"
click node_guestentry "https://github.com/nolane-x/nolane-opencontainer/blob/main/apps/playground/public/opencontainer-guest-worker.mjs"
click node_sync "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/process/src/sync-rpc.js"
click node_toolchain "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/toolchain/src/index.js"
click node_wasm "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/toolchain/src/wasm-artifact-manager.js"
click node_preview "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/preview/src/index.js"
click node_persistence "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/persistence/src/index.js"
click node_resources "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/resources/src/index.js"
click node_diagnostics "https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/diagnostics/src/index.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_sdk,node_kernel,node_protocol toneBlue
class node_vfs,node_opfs,node_packages,node_artifact,node_resolver,node_virtualmodules,node_commonjs,node_esm toneAmber
class node_process,node_worker,node_toolchain,node_wasm toneMint
class node_network,node_preview,node_persistence,node_resources,node_diagnostics toneRose
class node_guest,node_guestentry,node_sync,node_developer toneIndigo
```

## Components

### Runtime Core

- [OpenContainer SDK](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/sdk/src/index.js): `packages/sdk/src/index.js`
- [Lifecycle Kernel](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/kernel/src/index.js): `packages/kernel/src/index.js`
- [Errors and Protocol](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/protocol/src/index.js): `packages/protocol/src/index.js`

### Workspace and Packages

- [Virtual Filesystem](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/vfs/src/index.js): `packages/vfs/src/index.js`
- [OPFS Checkpoints](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/vfs/src/opfs-authority.js): `packages/vfs/src/opfs-authority.js`
- [Package Graph](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/index.js): `packages/package-env/src/index.js`
- [Artifact Authority](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/artifact-authority.js): `packages/package-env/src/artifact-authority.js`
- [Module Resolver](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/resolver.js): `packages/package-env/src/resolver.js`
- [Virtual Node Modules](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/virtual-node-modules.js): `packages/package-env/src/virtual-node-modules.js`
- [CommonJS Loader](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/commonjs-loader.js): `packages/package-env/src/commonjs-loader.js`
- [Native ESM Publication](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/package-env/src/native-esm-publication.js): `packages/package-env/src/native-esm-publication.js`

### Execution and Toolchain

- [Process Supervisor](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/process/src/index.js): `packages/process/src/index.js`
- [Worker RPC Authority](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/process/src/worker-authority.js): `packages/process/src/worker-authority.js`
- [Toolchain Profiles](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/toolchain/src/index.js): `packages/toolchain/src/index.js`
- [WASM Artifact Manager](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/toolchain/src/wasm-artifact-manager.js): `packages/toolchain/src/wasm-artifact-manager.js`

### Runtime Services

- [Network Authority](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/network/src/index.js): `packages/network/src/index.js`
- [Preview Authority](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/preview/src/index.js): `packages/preview/src/index.js`
- [Snapshots and Export](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/persistence/src/index.js): `packages/persistence/src/index.js`
- [Resource Governor](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/resources/src/index.js): `packages/resources/src/index.js`
- [Diagnostic Journal](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/diagnostics/src/index.js): `packages/diagnostics/src/index.js`

### Browser Integration

- [Browser Guest Worker](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/process/src/browser-guest-worker.js): `packages/process/src/browser-guest-worker.js`
- [Guest Worker Entry](https://github.com/nolane-x/nolane-opencontainer/blob/main/apps/playground/public/opencontainer-guest-worker.mjs): `apps/playground/public/opencontainer-guest-worker.mjs`
- [Synchronous RPC](https://github.com/nolane-x/nolane-opencontainer/blob/main/packages/process/src/sync-rpc.js): `packages/process/src/sync-rpc.js`

### Other components

- **Developer**

## Connections

- Developer → OpenContainer SDK: boots runtime
- OpenContainer SDK → Lifecycle Kernel: boots
- OpenContainer SDK → Virtual Filesystem: mounts files
- OpenContainer SDK → Process Supervisor: spawns commands
- OpenContainer SDK → Package Graph: binds package commands
- OpenContainer SDK → Preview Authority: publishes preview
- OpenContainer SDK → Network Authority
- OpenContainer SDK → Snapshots and Export
- OpenContainer SDK → Resource Governor
- OpenContainer SDK → Diagnostic Journal
- OpenContainer SDK → Lifecycle Kernel: checks readiness
- Package Graph → Virtual Filesystem: reads and writes
- Package Graph → Artifact Authority: ingests artifacts
- Artifact Authority → Network Authority: authorizes fetches
- Package Graph → Module Resolver: resolves modules
- Package Graph → Virtual Node Modules: projects packages
- Module Resolver → CommonJS Loader: supports loading
- Module Resolver → Native ESM Publication: publishes modules
- Process Supervisor → Resource Governor: governs processes
- Process Supervisor → Browser Guest Worker: executes in browser
- Browser Guest Worker → Worker RPC Authority: dispatches RPC
- Browser Guest Worker → Native ESM Publication: resolves dynamic imports
- Browser Guest Worker → Synchronous RPC: settles sync RPC
- Guest Worker Entry → Synchronous RPC: creates mailbox
- Guest Worker Entry → Native ESM Publication: resolves dynamic imports
- Toolchain Profiles → WASM Artifact Manager: verifies artifacts
- Snapshots and Export → Virtual Filesystem: snapshots and restores
- OPFS Checkpoints → Virtual Filesystem: checkpoints and restores
- Lifecycle Kernel → Diagnostic Journal: records lifecycle
- Worker RPC Authority → Diagnostic Journal: records RPC
- Browser Guest Worker → Diagnostic Journal: records worker events
