dev-tools 5 min read

Bodge.app – μFaaS for Personal Tools

Bodge.app turns a few lines of Lua into a live HTTP endpoint in seconds—no config, no Docker, no pipeline. A minimal Functions-as-a-Service for personal tools and side projects.

By
Share: X in
Bodge.app product thumbnail

TL;DR

TL;DR: Bodge.app is a minimal HTTP-based Functions-as-a-Service platform — write a Lua function, click a button, get a live URL. No YAML, no containers, no build pipeline.

Source and Accuracy Notes

⚠️ This section is MANDATORY. All links must be verified from actual source, not guessed.

What Is Bodge.app?

Bodge.app describes itself as μFaaS — micro Functions-as-a-Service — purpose-built for the kind of tools developers throw together on a Friday afternoon and then rely on forever. The pitch is deliberately narrow:

  • You write a Lua function that receives a plain HTTP request and returns a plain HTTP response.
  • You click Deploy.
  • You get a public HTTPS URL that runs your function on every request.

The demo at demo.bodge.link is live and clickable — no account required to see a function execute. The product page is minimal by design: JetBrains Mono font, water.css styling, and a handful of feature bullets.

Key claims (verbatim from bodge.app)

“No YAML files, no Docker, no build pipelines. Write a script, click a button.”

“Plain old HTTP(S) requests and responses. The rest, you decide.”

“Flat subscription pricing, no surprise bills. Everything you actually need included.”

The beta is currently free. When the beta ends, beta accounts auto-convert to a free tier with lower limits.

Setup Workflow

Step 1: Write a Lua function

Create a file named handler.lua with a handle function:

-- handler.lua
function handle(request)
    local name = request.query.name or "World"
    return {
        status = 200,
        headers = {["Content-Type"] = "application/json"},
        body = '{"message": "Hello, ' .. name .. '!"}'
    }
end

The request object gives you query, body, headers, and method — a subset of the WAPI (Web API Interface) pattern used in Lua web frameworks.

Step 2: Deploy

Sign up at bodge.app, upload your .lua file, and click Deploy. Within seconds you receive a permanent HTTPS URL:

https://your-function.bodge.app/

Step 3: Call it

curl "https://your-function.bodge.app/?name=Friday"
# {"message": "Hello, Friday!"}

Everything is stateless — no session, no state between requests unless you add a database or key-value store yourself.

Practical Evaluation Checklist

  • Language: Lua 5.x (lightweight, fast startup, ~instant cold starts since there is no container)
  • Runtime isolation: each function gets its own execution context; no shared memory
  • HTTP semantics: sync only (request → response); no streaming, no websockets (from the product page)
  • Scaling: handled server-side by Bodge; no user-facing concurrency controls documented
  • Use cases that fit: URL shorteners, personal webhooks, one-off data transforms, lightweight API proxies, quick prototypes
  • Use cases that do not fit: long-running computation (no timeout documented but likely a few seconds), heavy I/O, anything requiring a database built-in
  • Pricing: free during beta; free tier after beta with unspecified limits; paid tiers TBD
  • Privacy: no login-wall for reading the demo; no cookies on the demo URL

Security Notes

  • Functions run server-side; Lua sandbox scope is documented as intentionally minimal
  • No environment variable support is mentioned in the current product description
  • The free/demo tier means your function URLs are publicly discoverable — do not use for secrets or production auth flows until paid tiers with isolation guarantees are available
  • As a beta proprietary SaaS, there is no self-hostable version

FAQ

Q: Is there a self-hosted option? A: No. Bodge.app is a hosted SaaS only. There is no open-source component or self-hostable variant as of the current beta.

Q: What happens when the beta ends? A: Beta accounts auto-convert to a free tier. Limits may decrease. Paid tiers are planned but pricing has not been announced.

Q: Can I use libraries in my Lua function? A: The runtime is intentionally minimal. Only the standard Lua libraries and the WAPI request object are available. No pip/node-style package manager is documented.

Q: How fast are cold starts? A: Lua is an interpreted language with near-instant startup. Cold start latency is not formally documented but the demo URL is responsive in practice.

Q: Is there a size or runtime limit? A: Beta limits exist (unspecified in the current product page). The product page notes limits are subject to change without notice during beta.

Conclusion

Bodge.app occupies a narrow but useful niche: the micro-functions pattern without the infrastructure ceremony of a full FaaS (AWS Lambda, Cloudflare Workers) or the operational overhead of Docker. If you need to expose a small bit of logic as a URL and you are comfortable with Lua’s lightweight syntax, it is one of the quickest paths from idea to live endpoint. The beta is free, the editor is the browser, and the result is a permanent HTTPS URL.

Watch for paid tier announcements if you need stricter isolation or higher limits.