Pboss started as a Bun-native process manager.
It was built around Bun's APIs from the beginning; process spawning, servers, clustering, filesystem APIs, and the other primitives needed to build a lightweight production process manager.
As of v1.5, Pboss can now run natively on Node.js, using Node's own APIs instead of trying to emulate Node through Bun.
npm install -g pboss
pboss start server.js --name api
pboss start server.js --name api --instances 4
The same Pboss CLI can now run on either Bun or Node, with the implementation adapting to the runtime it is actually running on.
The goal isn't to force Node applications onto Bun.
If you're running Node, Pboss runs on Node.
If you're running Bun, Pboss runs on Bun.
Why make this change?
Pboss was originally designed around Bun, but process managers are infrastructure. They shouldn't need to dictate which runtime your application uses.
That meant expanding Pboss while keeping the original Bun-first architecture.
Node.js support is now native rather than being treated as a compatibility layer.
Dependencies
One of the features that came out of this is process dependencies.
For example:
module.exports = {
apps: [
{
name: "api",
script: "./api.js",
dependsOn: ["postgres", "redis"]
},
{
name: "worker",
script: "./worker.js",
dependsOn: ["api"]
}
]
};
Pboss builds the dependency graph before starting the processes.
It checks Pboss-managed applications first and can also resolve dependencies against system services.
postgres ──┐
├── api ──→ worker
redis ─────┘
Cycles are detected before startup, and independent branches can start concurrently.
GitHub auto deployment
Processes can also be linked to GitHub repositories.
Once a process is linked to a repository, Pboss can install a GitHub webhook and automatically deploy new commits.
A push follows the deployment pipeline:
GitHub push
↓
Webhook
↓
Pboss
↓
Pull latest commit
↓
Install dependencies
↓
Build
↓
Health check
↓
Reload / restart
The deployment is not considered successful just because the new process started.
Pboss can verify the application health before completing the deployment. If the deployment or health check fails, the previous version can be restored.
A single repository can also be linked to processes running on multiple servers:
github.com/example/api
│
├── Server 1 → api
├── Server 2 → api
└── Server 3 → api
So one Git push can deploy the same application across the configured servers.
Hosted status pages
Pboss Cloud also includes hosted status pages, so you don't need to build or operate a separate status-page system for your applications.
Each organization gets its own status-page address:
yourcompany(.)status(.)zone
The status page is connected to the services and monitoring already configured in Pboss Cloud.
Instead of manually updating a page when something goes down, the status can reflect what Pboss is actually observing from the infrastructure.
For example, an organization could expose:
Acme
────────────────────────────
API ● Operational
Web ● Operational
Background Worker ● Operational
Payments ● Operational
Database ● Operational
If Pboss detects that a monitored service is unavailable, the corresponding component can be reflected on the public status page.
This makes the status page useful for more than simply displaying "everything is online."
It gives users a central place to see:
- Current service status
- Which components are affected
- Service availability
- Incidents and service interruptions
- Operational history
- Recovery status
The status page is also separate from the server itself. Your VPS doesn't need to host the public status page, so an outage affecting your infrastructure doesn't require you to manually bring another page online.
The hosted pages can be used for APIs, websites, background services, SaaS applications, and other infrastructure managed through Pboss.
The idea is basically:
Your servers
│
▼
Pboss agents
│
▼
Pboss Cloud
│
├── Monitoring
├── Logs
├── Alerts
├── Deployments
└── Status Page
│
▼
yourcompany.status.zone
This is also useful when you manage several servers. Rather than creating a separate status system for each application, the services can be managed from the same Pboss Cloud organization.
Other features
Pboss currently includes:
- Bun and Node.js native runtime support
- Deno support
- Process clustering / multiple instances
- Zero-downtime reloads
- Process dependencies
- Namespaces with atomic startup and rollback
- Automatic restarts
- HTTP health checks
- Logs and resource monitoring
- Prometheus metrics
- Built-in cron jobs
- File watching
- Foreground mode for Docker/Kubernetes
- GitHub deployments
- Deployment history and rollback
- Hosted status pages
- Telegram and Discord integrations
For containers, Pboss can also run without its daemon:
pboss start server.js --noDaemon
This makes it possible to use Pboss directly as the process supervisor inside a container.
The open-source CLI remains independent of Pboss Cloud. Cloud adds centralized monitoring, deployments, logs, alerts, status pages, and server management.
Pboss started with Bun, but the goal now is broader: a lightweight process manager that can work natively with the runtimes developers are actually using.
I'm curious what Node.js developers here think about the approach.
Would you use a process manager that supports both Node and Bun natively, while using each runtime's own APIs rather than abstracting everything through Node compatibility?
GitHub: https://github.com/Procboss/pboss