Wetlands and Appose
Appose and Wetlands both let an application run work in isolated local processes and exchange data with them. The projects emphasize different use cases, so the better choice depends on the application.
| Wetlands | Appose | |
|---|---|---|
| Primary use case | Call installed Python functions or explicit Python source paths from a Python application | Cooperate across processes and languages through tasks, services, and custom workers |
| Languages | Python host and Python workers | Python and Java APIs with Python, Java, Groovy, and custom workers |
| Environments | Managed Pixi projects | Pixi, Conda/Mamba, uv, the system environment, or an existing environment |
| Arrays and shared memory | Pass ordinary NumPy arrays automatically; inputs use copy-in semantics and results are independently owned | Pass explicit NDArray objects for zero-copy tensor sharing between processes and languages |
| Long-lived workers | Managed worker pools, automatic replacement, and optional detach-and-reconnect persistence | Reusable services that run repeated or concurrent tasks in a worker process |
| Interactive debugging | Attach VS Code or another Debug Adapter Protocol client to an already-running Python worker | Documented diagnostics focus on verbose logging and the JSON worker protocol |
Choosing between them
Consider Wetlands when the host and worker code are Python, callers should pass ordinary Python values and NumPy arrays, or the application benefits from managed pools, reproducible pixi.lock provisioning, and post-hoc debugger attachment.
Consider Appose when Python must call Java or Groovy, Java must call Python, tensors should remain in explicitly managed zero-copy shared memory, or the application needs a choice of environment backends or a custom worker protocol.
Both projects support asynchronous tasks, progress updates, cancellation, isolated environments, and reuse of a running worker for multiple tasks. Neither project's process or environment boundary is a security sandbox for untrusted code.
See the Appose documentation for its current APIs and supported features. For Wetlands, continue with Run your first task, NumPy arrays and shared-memory transport, or Debug a running worker.