
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
Titan Planet is a JavaScript-first backend framework that embeds JS actions into a Rust + Axum server and ships as a single native binary. Routes are compiled to static metadata; only actions run in the embedded JS runtime. No Node.js. No event loop in pr
You write zero Rust. TitanPl handles routing, bundling, runtime execution, hot reload, and deployment —
all powered by Rust under the hood.
Titan Planet is a JavaScript/TypeScript-first Backend Framework that compiles your application into a single, high-performance native binary. It embeds it's own Gravity (V8) JavaScript runtime directly into a specialized Rust + Axum server.
TypeScript Precision. JavaScript Simplicity. Native Rust Power. Zero Configuration.
Titan Planet compiles your JavaScript or TypeScript application into a single native Rust binary.
It embeds a V8 runtime inside a Rust + Axum server — giving you:
Start with pure TypeScript. Drop into Rust when you need extreme performance. Titan handles the integration automatically.
The titanpl CLI is used to create and manage all your new projects and everything related to Titan.
npm install -g @titanpl/cli@latest
Titan guides you through selecting the perfect architecture for your needs.
titan init my-app
Select your language:
JavaScript (Fast, lightweight)TypeScript (Strict, typed)Select your architecture:
Standard (Pure JS/TS)Rust + JS/TS (Hybrid) (High-performance native actions)Inside your project:
cd my-app
npm run dev
You'll see the Titan Dev Server spin up:
⏣ Titan Planet v1.0.0 [ Dev Mode ]
Type: TS Actions
Hot Reload: Enabled
Env: Loaded
🚀 Starting Titan Engine...
[Titan] 1 reply route(s) pre-computed
Titan server running at: http://localhost:5100 (Threads: 32, Stack: 8MB, Dev Mode)
Titan is unique because it allows you to write endpoints in JavaScript, TypeScript, and Rust within the same project.
| Feature | Status | Notes |
|---|---|---|
| Standard JavaScript | ✅ Stable | Production Ready |
| Standard TypeScript | ✅ Stable | Production Ready |
| Rust + JS (Hybrid) | 🧪 Experimental | Dev Only, Production Under Testing |
| Rust + TS (Hybrid) | 🧪 Experimental | Dev Only, Production Under Testing |
app/actions/hello.ts)Fully typed, strict, and auto-compiled.
import { defineAction } from "@titanpl/native";
interface HelloResponse {
message: string;
user_name: string;
}
// "defineAction" provides automatic type inference for "req"
export const hello = defineAction((req): HelloResponse => {
t.log("Handling request with strict types...");
return {
message: "Hello from TypeScript!",
user_name: req.body.name || "Guest"
};
});
app/actions/hello.js)Perfect for business logic, rapid prototyping, and IO-bound tasks.
export const hello = defineAction((req) => {
t.log("Handling user request...");
return {
message: "Hello from JavaScript!",
user_id: req.params.id
};
});
Perfect for heavy computation, encryption, image processing, or low-level system access.
Note: The Native Rust Action API is currently in Beta.
use axum::{response::{IntoResponse, Json}, http::Request, body::Body};
use serde_json::json;
pub async fn run(req: Request<Body>) -> impl IntoResponse {
let result = heavy_computation();
t.log("Processed 1M records in Rust");
Json(json!({ "result": result }))
}
Titan automatically detects, compiles, and routes all types.
.ts files are type-checked and compiled with esbuild..js files are bundled with esbuild..rs files are compiled into the native binary.routes.json configuration.Titan prioritizes code quality by enforcing Strict TypeScript logic during development.
If titan dev detects a type error, the server will not run. This ensures you never ship or test broken code.
When a type error occurs, Titan pauses execution and provides a clear, actionable log:
[Titan] ❌ TypeScript Error:
app/actions/payment.ts(12,5): error TS2322: Type 'string' is not assignable to type 'number'.
10 | const amount: number = req.body.amount;
11 |
> 12 | processPayment( "100" ); // Error here
| ^^^^^^^^^^^^^^^^^^^^^^^
[Titan] 🛑 Server paused due to type errors. Fix them to resume.
Once fixed, the server automatically resumes.
t)All actions (JS/TS/Rust) have access to the powerful t namespace:
t.fetch(url, options) — High-performance HTTP clientt.log(msg) — Sandboxed, structured loggingt.jwt.sign / verify — Fast JWT operationst.password.hash / verify — Secure password handlingt.db — Database accessExtend the runtime with custom Rust engines using Titan Extensions.
titan create ext <name>: Scaffold a new extension.titan run ext: Test your extension in a lightweight harness.Titan offers a unified build system that packages your JS/TS code, assets, and the native engine into a single, self-contained build/ directory.
Run this command from your project root:
titan build --release
This will:
.jsbundle files..ext/.public/, static/, and other configured assets.titan-server executable in the build/ folder.cd build
./titan-server
Your application is now running as a standalone native server.
The titan build --release command is optimized for Docker. Your Dockerfile can be as simple as:
FROM node:20-slim AS builder
WORKDIR /app
COPY . .
RUN npm install --include=optional
RUN npx titan build --release
FROM ubuntu:24.04
WORKDIR /app
COPY --from=builder /app/build .
CMD ["./titan-server", "run", "dist"]
This produces a tiny, high-performance production image with zero node_modules.
tanfig.json)You can customize the build process in your tanfig.json:
{
"build": {
"purpose": "deploy",
"files": ["public", "db", "secrets"]
}
}
purpose: Use deploy to skip node_modules junctions for the smallest possible footprint.files: List any extra folders you want included in the build/ output.To know more read docs 💟 Titan Planet docs: https://titanpl.vercel.app/docs
FAQs
Titan Planet is a JavaScript-first backend framework that embeds JS actions into a Rust + Axum server and ships as a single native binary. Routes are compiled to static metadata; only actions run in the embedded JS runtime. No Node.js. No event loop in pr
We found that titanpl demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.