Getting Started with Languages

Run your own code on Witchly.host — Node.js, Python, Bun, Deno, Java, Go, Rust, Elixir, Dart, Luvit, and nodemon runtimes. Bring a Git repo or upload files via SFTP.

Getting Started with Languages

The Languages category lets you host arbitrary code — bots, APIs, background workers, scripts, microservices — on 11 managed language runtimes. Instead of picking a specific app (Lavalink, JMusicBot, etc.), you bring your own code.

Available runtimes

RuntimeVersionDocker image
Node.js25.xnodejs_25
nodemon24.x with auto-reloadnodejs_24
Python3.13python_3.13
Bunlatestbun_latest
Denolatestdebian (Deno installed manually)
Java8java_8
Golatestdebian (Go compiled from source)
Rustlatestrust_latest
Elixirlatestelixir_latest
Dartstabledart_stable
Luvitlatestdebian (Luvit installed manually)

How it works

Every language egg supports two workflows:

Git-based (recommended):

  1. Point the Git Repo Address variable at a public or private repo.
  2. Set the branch (default: master/main).
  3. For private repos, fill in Git Username and Git Access Token.
  4. Deploy — the egg clones the repo on install.

Upload via SFTP:

  1. Set User Uploaded Files to 1 on the Startup tab.
  2. Connect via SFTP and upload your code.
  3. Install dependencies from the Console tab.

Elite plans for languages

Three subscription tiers, sized smaller than Applications because runtimes typically have smaller working sets:

  • The Script — $2/mo · 512 MB RAM · 50% CPU · 2 GB disk · 1 DB
  • The Runtime — $4/mo · 1 GB RAM · 100% CPU · 10 GB disk · 1 DB (best seller)
  • The Compiler — $6/mo · 2 GB RAM · 200% CPU · 20 GB disk · 2 DBs

Free tier

All 11 runtimes are available on the free tier. Free-tier language servers use the same coin economy and 7-day renewal cycle as game servers. Great for learning, one-off scripts, or bots you can afford to lose.

Auto-update

Most runtime eggs support an Auto Update variable. When set to 1, the server runs git pull on each start so your code stays in sync with your repo. Set it to 0 for pinned/stable deployments.

Deploying your first server

  1. dash.witchly.hostDeployLanguages tab.
  2. Pick your runtime.
  3. Choose tier and location.
  4. Click Deploy.
  5. On the Startup tab, fill in Git Repo Address (or toggle User Uploaded Files).
  6. If you’re uploading manually, SFTP in and drop your files in /home/container/.
  7. Hit Start on the Console tab.

Choosing a runtime

  • Discord bots / small web apps → Node.js, Python, Bun
  • Performance-critical services → Go, Rust
  • Scripts and ML / data → Python
  • Enterprise / large apps → Java
  • Phoenix / OTP apps → Elixir
  • CLI tools, Flutter-adjacent → Dart
  • Lua-based Discord bots (Discordia) → Luvit
  • Modern, all-in-one JS tooling → Bun
  • Secure-by-default TypeScript → Deno

Next steps