---
title: "Deploy OpenHuman Core | (Just Updated) Remote AI Core, Healthchecked"
description: "Remote AI core with a working healthcheck and the Node runtime prebaked"
category: "AI/ML"
url: https://railway.com/deploy/openhuman-core-v06-1
---

# Deploy OpenHuman Core | (Just Updated) Remote AI Core, Healthchecked

Remote AI core with a working healthcheck and the Node runtime prebaked

**[Deploy OpenHuman Core | (Just Updated) Remote AI Core, Healthchecked on Railway](https://railway.com/template/openhuman-core-v06-1)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/openhuman-core-v06-1/manifest.json

- **Creator:** SuperSlowSloth
- **Category:** AI/ML

## Template content

### openhuman-core

- **Image:** ghcr.io/bon5co/openhuman-railway:latest
- **Health check:** /health
- **Public domain:** Yes

## Documentation

# Deploy and Host OpenHuman Core on Railway

OpenHuman Core is the Rust backend behind the OpenHuman desktop app — agent runtime, memory,
skills, scheduler and a JSON-RPC API. This template runs it as an always-on remote core on
Railway, with its workspace on a persistent volume and its RPC surface behind a bearer token
that Railway generates for you.

## About Hosting OpenHuman Core

Hosting the core on Railway means your agent, its memory and its schedules keep running when
your laptop is closed, and any OpenHuman desktop client can attach to the same core from
anywhere. Deploy the template, wait for the service to go healthy, then copy
`OPENHUMAN_CORE_RPC_URL` and `OPENHUMAN_CORE_TOKEN` from the service variables into the
desktop app's remote-core settings.

This template is packaged for how Railway actually redeploys containers:

- **The managed Node runtime is baked into the image.** The agent harness normally downloads
  Node v22.11.0 (29 MB archive, ~190 MB extracted) from nodejs.org on first boot, into a cache
  directory that is *not* the volume — so on Railway that download is replayed on every single
  redeploy, and a boot with no egress to nodejs.org leaves the JavaScript harness unavailable.
  Here the first boot is already a warm start.
- **A working healthcheck.** The core reads its listen port from `OPENHUMAN_CORE_PORT` and
  ignores `PORT`, while Railway's healthcheck dials the port it injects — so an unmodified
  image cannot pass a healthcheck at all, and a broken boot is reported as a successful deploy.
  This image follows the injected port, and the deploy is gated on `GET /health`.
- **The version is pinned.** The core migrates its workspace — `config.toml` and its SQLite
  session and memory databases — forward on boot, so an unpinned image turns any redeploy into
  an unrequested upgrade with no way back.
- **The deploy form asks for nothing.** The token is generated by Railway and the RPC URL is
  derived from your public domain; every other setting is baked into the image.

The volume is mounted at `/home/openhuman/.openhuman`, which holds config, the session and
memory databases, the skill registry and agent state.

## Common Use Cases

- Run OpenHuman as an always-on remote core that survives closing your laptop
- Attach the OpenHuman desktop app from several machines to one shared agent, memory and schedule
- Keep long-running agent flows, cron jobs and MCP clients executing on a hosted machine

## Dependencies for OpenHuman Core Hosting

- The OpenHuman desktop app, pointed at this deployment's RPC URL
- A Railway volume for the core workspace
- The TinyHumans backend (`https://api.tinyhumans.ai`) for sign-in and cloud services

### Deployment Dependencies

- [OpenHuman](https://github.com/tinyhumansai/openhuman)
- [OpenHuman documentation](https://tinyhumans.gitbook.io/openhuman)
- [Railway wrapper image source](https://github.com/bon5co/openhuman-railway)

### Implementation Details

The core refuses to bind a public address without an operator-supplied token, so the template
generates one:

```env
OPENHUMAN_CORE_TOKEN="${{ secret(32) }}"
OPENHUMAN_CORE_RPC_URL="https://${{ RAILWAY_PUBLIC_DOMAIN }}/rpc"
```

Check the deployment before connecting a client:

```bash
curl https:///health          # 200, no token required
curl -X POST https:///rpc \
  -H "Authorization: Bearer $OPENHUMAN_CORE_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"core.status"}'
```

An unauthenticated `POST /rpc` answers `401`.

## Why Deploy OpenHuman Core on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your
infrastructure so you don't have to deal with configuration, while allowing you to vertically
and horizontally scale it.

By deploying OpenHuman Core on Railway, you are one step closer to supporting a complete
full-stack application with minimal burden. Host your servers, databases, AI agents, and more
on Railway.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [Weaviate](https://railway.com/deploy/weaviate-1) — Vector database with hybrid search and an API key-protected API
- [Möbius v0.1 Personal AI OS](https://railway.com/deploy/mobius-v01-personal-ai-os) — Self-hosted AI agent that builds and runs apps for you, with memory.

Open this page in a browser: https://railway.com/deploy/openhuman-core-v06-1
