Skip to main content

Language Guides

These guides take you from a project on your laptop to a running app on Miren, one language at a time. Each one covers the same three things: how to set up the app, how to set environment variables, and whether you need a Dockerfile.

Let your agent do this

If you use an AI coding agent (Claude Code, Codex, Amp, and others), you don't have to follow these guides by hand. Install the Miren agent skills and ask your agent to "set up this app on Miren" — it reads your project, detects the stack, wires up environment variables, and deploys. These guides double as the reference your agent works from. See Agent Skills for setup.

Pick your language

GuideAuto-detected?You provide
PythonYesrequirements.txt / pyproject.toml / Pipfile / uv.lock
JavaScript (Node & Bun)Yespackage.json + a lockfile
GoYesgo.mod
RubyYesGemfile
RustYesCargo.toml
ElixirNoDockerfile.miren
GleamNoDockerfile.miren
CrystalNoDockerfile.miren
ZigNoDockerfile.miren
DenoNoDockerfile.miren
NimNoDockerfile.miren
CNoDockerfile.miren
C++NoDockerfile.miren
Objective-CNoDockerfile.miren
.NET / C#NoDockerfile.miren
F#NoDockerfile.miren
Java / JVMNoDockerfile.miren
KotlinNoDockerfile.miren
ScalaNoDockerfile.miren
ClojureNoDockerfile.miren
ErlangNoDockerfile.miren
PHPNoDockerfile.miren
PerlNoDockerfile.miren
RakuNoDockerfile.miren
OCamlNoDockerfile.miren
HaskellNoDockerfile.miren
SwiftNoDockerfile.miren
DartNoDockerfile.miren
JRubyNoDockerfile.miren
TruffleRubyNoDockerfile.miren
JuliaNoDockerfile.miren
RNoDockerfile.miren
LuaNoDockerfile.miren
Klong (K)NoDockerfile.miren
Common LispNoDockerfile.miren
COBOLNoDockerfile.miren
BashNoDockerfile.miren
Static sites & SPAsNoDockerfile.miren

Auto-detected vs. Dockerfile

For most languages, Miren detects your stack from your project files and builds a container image for you — no Dockerfile required. You run miren init once and miren deploy, and Miren figures out the rest. See Supported Languages for exactly what's detected and how.

Every other language here — from Elixir and Gleam to Kotlin, Swift, Julia, and even COBOL — isn't auto-detected, so its guide shows you a Dockerfile.miren you can drop into your project. Miren builds from that Dockerfile instead of guessing. This is the same escape hatch available to every language when you need full control over the build — see Using Dockerfile.miren.

Want native support?

Native builds cover the common stacks today (Python, Node, Bun, Go, Ruby, Rust). If you'd like Miren to detect and build another language first-class — no Dockerfile needed — tell us what to build next.

Custom Dockerfiles need an explicit service

Even with a Dockerfile.miren, you must define at least one service — a Procfile or a [services.web] block. Miren does not use the image's CMD/ENTRYPOINT as the start command; that fallback applies only to auto-detected stacks.

What every guide assumes

  • You've installed Miren and can reach a cluster. If not, start with Getting Started.
Bind to the injected port

Your web service must bind to 0.0.0.0 on the port in the PORT environment variable. Miren injects PORT at runtime and routes traffic to it — an app that hardcodes localhost or a fixed port won't receive traffic.

Next steps