Web app hosting in any language.
Push your source and it's live in about a minute: built, autoscaled and kept up for you, with no server to manage. If a release goes wrong, rewind the whole app, data included, to any moment.
Free to start, no card required
- Push to live
- 50s
- median over the last 30 days
- Requests served
- 168.8K
- in the last 24 hours
- Releases shipped
- 2,752
- in the last 30 days
Git push. CLI. Or your AI agent.
Four ways in, one pipeline behind them. Push to GitHub and it's live in about a minute, with a preview of every pull request. No Dockerfile, no build config, no workflow file.
name: Deploy to velixir
on:
push:
branches: [main]
permissions:
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
# One deploy at a time: a push that lands mid-deploy waits for the one before it.
concurrency:
group: velixir-deploy
cancel-in-progress: false
steps:
- uses: actions/checkout@v7
- name: Install the velixir CLI
shell: bash
run: |
curl -fsSL https://velixir.net/install.sh | sh
echo "$HOME/.velixir/bin" >> "$GITHUB_PATH"
- name: Deploy
env:
VELIXIR_API_KEY: ${{ secrets.VELIXIR_API_KEY }}
VELIXIR_APP_ID: ${{ vars.VELIXIR_APP_ID }}
run: |
if [ -z "$VELIXIR_API_KEY" ] || [ -z "$VELIXIR_APP_ID" ]; then
echo "::error::Add the VELIXIR_API_KEY secret and the VELIXIR_APP_ID variable under Settings > Secrets and variables > Actions."
exit 1
fi
velixir deploy --app "$VELIXIR_APP_ID"
# VELIXIR_API_KEY and VELIXIR_APP_ID are masked CI/CD variables
deploy:
stage: deploy
rules:
- if: $CI_COMMIT_BRANCH == "main"
script:
- curl -fsSL https://velixir.net/install.sh | sh
- export PATH="$HOME/.velixir/bin:$PATH"
- velixir deploy --app "$VELIXIR_APP_ID"
Everything your app needs. Nothing it doesn't.
The parts every production app ends up needing are built in, and run by us in the EU, so your time goes on the app itself.
Immutable releases
Your source becomes an image once, so scaling out is a pull, never a rebuild, and any earlier release is back in seconds. Need the data back too? Rewind brings back the whole app. Files that must outlive a release go on a persistent volume.
Protection at the edge
A switch per appPer-IP rate limits, a managed WAF on the OWASP Core Rule Set, and an under-attack mode that has every browser solve a proof of work. Each one is a switch, per app, live without a redeploy.
TLS and custom domains
Certificates are issued and renewed for you, on your velixir.run address and on every custom domain you add.
Autoscaling
Minimum and maximum instances per app, scaled on CPU with defaults that already work. Up when it's busy, back down when it isn't.
High availability
Turn on HA and warm standby replicas wait on separate machines, so a node going dark doesn't take your app with it. Capacity and patching are ours too.
Workers, cron jobs and migrations
Paid plansBackground workers, scheduled jobs and a release command ship from your Procfile in the same deploy. Each worker has its own size and replica count, cron runs are billed by the second, and migrations run once, before traffic moves.
A private network for your team
Every planYour apps call each other at api.internal, straight across our network and never over the public internet. Your databases and caches are on it too, and other teams can't reach it.
Send every app's logs to Grafana, Datadog, Axiom, Better Stack or any OpenTelemetry endpoint, seconds after each line is written. Each line says which app, process and deploy it came from.
A signed request to Slack, your CI or your own code the moment a deploy lands, a build fails or a cron job errors. If your end is down, we retry for a day.
Unmetered bandwidth
No egress fees and no per-GB meter, so a busy launch day never lands as a surprise on the bill. A soft fair-use guideline keeps one app from crowding out the rest.
AI writes code faster
than anyone can review it.
Reading every line was never going to keep up with an agent, and slowing the agent down to match isn't the answer either. So the guardrails live in the platform: every release is proven against your real traffic before it goes live, and the whole app can go back to any moment if something still gets through.
Replay proves it
Your new release answers yesterday's real requests on a sealed copy of your app, side by side with what's live. New errors, changed responses and slower pages show up before a customer sees them, and your agent can read the report and fix them itself.
Rewind undoes it
Drag back to any moment and get your code, env vars, database, cache and files as they were, or only the parts you pick. Preview it on its own URL first. The original data is never overwritten, so even a rewind can be undone.
Your deploy failed.
Here's why, in English.
The worst part of a first deploy going wrong is not the error. It's not knowing which line of four hundred is the one that matters. Press Explain this on your logs and you get the cause in a sentence, the fix as steps, and the exact lines it read.
- It knows how velixir runs your app, so it catches the port and binding mistakes a generic assistant guesses at.
- It quotes the log lines behind every answer, so you can check the reasoning instead of trusting it.
- Runs on a European model, only when you press the button, and never sees your environment variable values.
Carbon negative by design
Our primary regions run on 100% renewable energy. The residual emissions we can't avoid? We offset them twice over with verified carbon removal credits, purchased daily, every kilogram on the public registry.
How we calculate it
Energy. We sum every active vCPU running on the platform (apps, managed Postgres, managed Valkey) and multiply by a conservative 8 W per vCPU and a PUE of 1.25. Our primary regions run on 100% renewable contracts; even so, we charge ourselves a residual 50 gCO2e per kWh to account for manufacturing, transmission losses, and embodied hardware emissions.
Offset. Each day at 02:00 UTC, we multiply yesterday's estimate by 2× and round up to the nearest kilogram. The order is placed against a portfolio of verified removal credits (biochar, reforestation with permanence guarantees, enhanced weathering), not avoidance offsets.
Audit. Every purchase generates a hosted certificate you can verify against the registry. View our latest ?
Start free. Pay for what runs.
Your first app sleeps when idle and wakes on the next request, so keeping it live costs nothing. No card to deploy. When you outgrow free, your first month is on us: €14.99 of credit when you add a payment method.
Web apps
Free
sleeps when idle · always-on from €3.49/mo
Managed Postgres
€4.95/mo
point-in-time recovery at every tier
Managed Valkey
€2.45/mo
Redis-compatible, fully managed
Hourly billing across all three products · trial credit deducted first · no lock-in.
Push your code.
velixir handles the rest.
Free to start, no card. Just your source, live in about a minute.
€14.99 credit on payment-method add - covers a full month of Starter + Postgres Starter + Valkey Starter · No charge until spent or 30 days · velixir.run
Prompt copied
Paste it into Claude Code, Codex, Cursor or any agent working in your app's folder. It deploys the app and hands you a link to keep it.
How agent deploys work →