-
Notifications
You must be signed in to change notification settings - Fork 17
π Roadmap (2026)Β #102
Description
π 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
@taskdecorator with JSON serialization. - CLI:
capsule run main.pywith 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.tomlfor 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-browserifyand aliasimport path from 'path'. - os: Custom minimal polyfill for
import os from 'os'. - process: Comprehensive
processpolyfill (env, argv, cwd, exit, nextTick) injected as a global via esbuild. - url: Alias Node's
import { URL } from 'url'to native WebURLclass. - buffer: Use
bufferpackage to polyfill Node.jsBufferclass βUint8Array. - events: Use
eventspackage to polyfillEventEmitter. - stream: Use
readable-streamfor Node.js stream compatibility. - stream-web: Use
stream-webfor Node.js stream/web compatibility. - fs: Map
import fs from 'fs'to WASI file operations:fs.readFile()β Capsule'sreadText()/readBytes()fs.writeFile()β Capsule'swriteText()/writeBytes()fs.readdir()β Capsule'slist()
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 (bypassescomponentize-pylimitation) - Enable filesystem mode:
read-onlyandread-writeto 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
--mountis used) - Environment: Return which environment variables were accessed