Production
Build and deploy Titan as a single native Rust binary without Node.js in production.
Titan production builds generate a single native Rust binary.
Node.js, npm, and the JavaScript toolchain are not required at runtime.
JavaScript is executed via an embedded runtime (Boa), while all networking, concurrency, and async execution are handled by Rust.
🏗️ Production Build
From your Titan project root, run:
titan buildTitan executes app/app.js --build to generate routing metadata and action mappings.
All JavaScript actions are bundled into deterministic .jsbundle artifacts.
A release-grade Rust binary is compiled using cargo build --release.
On success, you will see output similar to:
Titan: Building production output...
→ Building Titan metadata + bundling actions...
→ Found action bundle: getUser.jsbundle
→ Building Rust release binary...
✔ Titan production build complete!📦 Build Output
After the build completes, the final artifact is located at:
On Windows:
titan-server.exeThis binary is your entire backend.
No Node.js. No runtime dependencies. No JS process.
🚀 Deployment (Direct Binary)
Once built, you deploy Titan by uploading the binary.
No extra Titan commands, no build steps, no tooling required on the server.
You do not need to:
- Run
titan buildagain - Install Node.js or npm
- Install Titan on the server
- Use Docker (unless you want to)
- Run any Titan-specific tooling
Typical deployment flow
- Run
titan buildlocally or in CI - Upload
titan-serverto your server or platform - Run the binary
That’s it.
Works on:
- Any VPS
- Bare metal
- Systemd services
- Cloud VMs
- Any Rust-compatible platform
▶️ Running in Production
Run the binary directly:
./titan-serverWindows:
titan-server.exeTitan starts immediately as a native server process.
🐳 Docker (Already Provided)
Titan projects ship with a fully ready Dockerfile.
You do not need to write or configure anything.
If you choose Docker, this is all you do:
titan build
docker build -t titan-app .
docker run -p 3000:3000 titan-appNothing else.
No Node.js image. No multi-stage hacks. No runtime JS.
Docker is optional, not required.
⚡ JavaScript Runtime in Production (Boa)
Boa does not reduce Titan’s production performance.
Facts:
- JavaScript runs via Boa, embedded in the Rust server
- HTTP, async I/O, threading, and scheduling are fully Rust-owned
- There is no JavaScript event loop
- Actions execute synchronously from Rust’s perspective
Boa is used only for business logic. Rust owns the performance-critical hot path.
Result:
- Predictable latency
- Stable throughput
- No dev vs prod behavior gap
☁️ Deploy on Railway / Render (GitHub → Production)
For Railway and Render, you do not deploy the binary manually.
Just push your Titan project to GitHub and connect the repository.
Don't forget to add the .gitignore
Titan projects ship with a fully production-ready Dockerfile.
Railway and Render automatically detect it and handle the entire build and runtime process.
How it works
- Push your full Titan project to GitHub
- Connect the repository to Railway or Render
- Click deploy
That’s it.
The platform will:
- Run
titan buildinside Docker - Compile the native Rust binary
- Start the server using the final binary
- Expose the service publicly
You do not need to:
- Install Titan on the platform
- Install Node.js manually
- Configure Rust
- Write a custom build command
- Manage runtime processes
What gets deployed
- Your JavaScript routes and actions
- The compiled Rust server
- A single production-ready container
The provided Dockerfile handles everything required for production.
Recommended settings
- Service type: Docker
- Build source: GitHub repository
- Port: Whatever your Titan server exposes (default documented)
Railway and Render both work out of the box with Titan’s default setup.
Summary
- Push project to GitHub
- Connect repo to Railway or Render
- Dockerfile builds and runs Titan automatically
- Zero manual production configuration
🔄 Updating a Production Project
To update Titan internals:
titan updateThis updates:
- Embedded Titan runtime
- Server templates
- Build infrastructure
Your application code and bundled actions are untouched.
🧩 Reverse Proxy Setup
Titan is designed to run behind standard reverse proxies, including:
- nginx
- Caddy
- Cloudflare
- Traefik
Titan does not replace these tools.
Summary
- Production output is a single native Rust binary
- Deploy by uploading and running the binary
- No Node.js or JS runtime in production
- Boa does not slow production
- Rust controls concurrency, async execution, and networking
- Docker is optional — and already handled for you