Skip to content

πŸ“Œ Roadmap (2026)Β #102

@mavdol

Description

@mavdol

πŸ“Œ Roadmap

This tracks the development status of Capsule.

Note

This roadmap reflects current priorities. Feature requests and ideas are welcome.


v0.1.0: The Python Runner

Status: βœ… Done

Goal: Validating the core Host/Guest technology and Python interoperability.

  • Core: Rust Host capable of loading Wasm Components.
  • SDK (Python): Basic @task decorator with JSON serialization.
  • CLI: capsule run main.py with JIT compilation.
  • Limits: Basic Fuel metering for CPU protection.
  • Resilience: Retry logic and real Timeout handling (Wall clock).

v0.2.0: Production & Polyglot

Status: βœ… Done

Goal: Stability, security, and expanding the ecosystem.

  • TypeScript SDK: Functional wrapper support (const t = task(...)).
  • Better Logs: Better logging for debugging and monitoring.
  • Distribution: CI/CD for binaries and Package Registries (PyPI, npm, crates.io).

v0.3.0: Data Access (Filesystem)

Status: βœ… Done

Goal: Enable agents to work with local files and datasets.

  • Filesystem: Local file mounting (fs_access) for reading images, CSVs, and datasets.

v0.4.0: Configuration & Observability

Status: βœ… Done

Goal: Improve developer workflow with project configuration and richer task feedback.

  • Config File: capsule.toml for default task options.
  • Structured Output: Tasks return a detailed JSON envelope with execution metadata:
{
  "success": true,
  "result": "<task return value>",
  "error": null,
  "execution": {
    "task_name": "analyze_data",
    "duration_ms": 1523,
    "retries": 0,
    "fuel_consumed": 45000
  }
}

On failure:

{
  "success": false,
  "result": null,
  "error": {
    "type": "timeout",
    "message": "Task exceeded 30s timeout limit"
  },
  "execution": {
    "task_name": "analyze_data",
    "duration_ms": 30000,
    "retries": 1,
    "fuel_consumed": null
  }
}

v0.5.0: Node.js Ecosystem Compatibility Extended

Status: βœ… Done

Goal: Enable natural Node.js development patterns and improve npm package compatibility in WASM.

Polyfills needed:

  • path: Use path-browserify and alias import path from 'path'.
  • os: Custom minimal polyfill for import os from 'os'.
  • process: Comprehensive process polyfill (env, argv, cwd, exit, nextTick) injected as a global via esbuild.
  • url: Alias Node's import { URL } from 'url' to native Web URL class.
  • buffer: Use buffer package to polyfill Node.js Buffer class β†’ Uint8Array.
  • events: Use events package to polyfill EventEmitter.
  • stream: Use readable-stream for Node.js stream compatibility.
  • stream-web: Use stream-web for Node.js stream/web compatibility.
  • fs: Map import fs from 'fs' to WASI file operations:
    • fs.readFile() β†’ Capsule's readText()/readBytes()
    • fs.writeFile() β†’ Capsule's writeText()/writeBytes()
    • fs.readdir() β†’ Capsule's list()

v0.6.0: SDK Runner & Network Controls

Status: βœ… Done

Goal: Enable seamless third-party integration and basic network security.

  • SDK Runner: Add run() function to both SDKs for async subprocess execution.
// JavaScript/TypeScript
import { run } from '@capsule-run/sdk/runner';

const result = await run({
  file: './capsule.ts',
  args: ['code to execute']
});
# Python
from capsule import run

result = await run(
    file="./capsule.py",
    args=["code to execute"]
)
  • Allowed Hosts: Restrict outgoing HTTP requests to a whitelist of domains.
// Allowed Hosts
export const main = task({
  name: "main",
  allowedHosts: ["api.openai.com", "*.anthropic.com"],
}, () => { ... });

v0.7.0: Prebuilt Sandbox Adapters & Network Support

Status: βœ… Done

Goal: Allow to easily use prebuilt sandboxed environments with ready‑to‑use adapters.

  • Python Adapter: Prebuilt sandbox template for Python frameworks.
  • TypeScript Adapter: Prebuilt sandbox template for TypeScript/JavaScript frameworks.
  • Socket shim for Python: Transparent support for standard network libraries (urllib) via a custom socket implementation (bypasses componentize-py limitation)
  • Enable filesystem mode: read-only and read-write to extend possibilities

v0.8.0: Richer execution metrics

Status: 🚧 In progress

Goal: Provide more visibility into each task's behavior for better auditing and monitoring.

  • Network : Return which domains/IPs were called and what data was sent
  • RAM: Return the exact amount of memory consumed by the task
  • Filesystem: Return which files were read, created or modified (useful when --mount is used)
  • Environment: Return which environment variables were accessed

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions