41 guides

AI agents & vibe-coded apps

Shipping what an LLM helped you write, and running agents that call one.

You Built an App With AI and Don't Code — How to Put It Online

Zip the folder, drop it in, answer a question about your API key. Here's what actually happens, what it can't do, and the three things that surprise people.

5 min read· vibe-coding · ai

Deploy Apps From Your AI Coding Agent via MCP (Cursor, VS Code, Claude Code)

Connect Cursor, VS Code, or Claude Code to JustRunMy.App's MCP server and deploy, configure, and operate apps directly from your AI agent.

4 min read· mcp · ai-agents

Hosting an AI Agent 24/7 — Calling a Model Is Cheap, Running One Isn't

An LLM agent is nearly the perfect small-container workload: idle, waiting on an API. The things that actually bite are slow calls, restarts, and state.

7 min read· ai-agents · llm

Your AI Wrote a Dockerfile — Check These Nine Things Before You Push

LLM-written Dockerfiles are usually valid and frequently wrong in the same ways. Three break the build, three deploy fine and then don't work.

6 min read· docker · dockerfile

LLM API Timeouts and Retries — What Actually Breaks on One Container

The SDK default is a 10-minute timeout retried twice. One stuck request can hold a worker for half an hour, and nothing on the platform notices.

7 min read· llm · ai-agents

What Hosting an AI App Costs — Spoiler, It's Not the Hosting

Estimate an AI app's hosting costs from CPU, RAM, and disk allocation. A medium API costs $4.15 a month; model API spending is separate.

5 min read· pricing · cost

Your Agent Loop Needs a Stop Condition

An agent decides for itself when it's finished, and sometimes it never does. Four limits stop a tool loop costing you money and getting OOM-killed.

6 min read· ai-agents · llm

Your AI-Built App Assumes One User — What Breaks With Two

Generated code keeps per-user state in module-level globals. One container means every visitor shares them, so the usual symptom is seeing someone else's data.

6 min read· vibe-coding · ai

Your AI-Built App Assumes a Database That Isn't There

Models make one of three database assumptions, and all three break on a container platform. Fixing them takes minutes if you know which one you've got.

5 min read· databases · vibe-coding

Six Security Holes AI-Generated Apps Ship With — A Pre-Deploy Review

Models write for the happy path on a machine only you can reach. Once deployed, that code is your entire defence. Six things to check, each a two-minute grep.

6 min read· security · vibe-coding

Conversation Memory for an LLM Bot — Whose Context Is It?

Per-user or per-channel isn't a storage detail. It decides who sees whose messages, what each reply costs, and how fast your disk fills up.

5 min read· llm · bots

Two Bots in One Channel — Stopping the Loop Before It Costs You

Telegram forbids bots seeing each other precisely to avoid this. Discord doesn't, so the check is yours — and with a model behind it, each lap is billable.

5 min read· discord · telegram

Changing a Prompt in Production Without Breaking It

A prompt is the least protected code in your app — no type check, no test, and failures look like slightly worse answers. Version it and gate it on evals.

6 min read· llm · ai-agents

Deploying the Next.js App Your AI Built — Three Things That Will Bite

v0, Lovable and Bolt all output Next.js. The build is what fails first, and NEXT_PUBLIC_ variables set on the app never reach the browser. Here's why.

6 min read· nextjs · vibe-coding

Deploying an AI-Generated Monorepo With a Frontend and a Backend

AI tools output frontend/ and backend/ folders, but the build only reads a Dockerfile at the root. Three ways to resolve that, and when one app beats two.

5 min read· monorepo · vibe-coding

Deploying a Vite + React SPA — The Fallback Rule and the Env Var Trap

A Vite build is static files, so two things break: refreshing a route 404s, and VITE_ variables are frozen at build time. Both have clean fixes.

6 min read· vite · react

Tell Your AI How It'll Be Deployed — One Prompt Block, Nine Fewer Bugs

Models write for localhost because that's the only target they're given. Paste these constraints into your prompt and most deploy-day failures never happen.

6 min read· ai · vibe-coding

Designing MCP Tools a Model Can Actually Use

Tool descriptions are documentation and prompt at once. The biggest lever is what a failure says — an error that explains itself turns a dead end into a retry.

5 min read· mcp · ai-agents

After the Deferral — Discord's 15-Minute Interaction Window

Deferring buys you time, not unlimited time. Tokens last 15 minutes, there are two kinds of deferral, and a redeploy mid-task leaves a spinner forever.

5 min read· discord · bots

How Do You Know Your Prompt Change Made Things Better?

You can't tell from one example. A file of test cases and a script catches regressions — and it belongs in CI, not on the container you're paying for.

5 min read· llm · evals

File Uploads in a Container — `./uploads` Is Not a Place

Generated code saves uploads next to the app, where they vanish on deploy. Two real options, and the disk limit that stops every app when uploads grow.

5 min read· uploads · volumes

Hosting Your Own Remote MCP Server — What Actually Changes

Only Streamable HTTP servers can be hosted; stdio ones run locally by definition. The gotchas are binding, Origin validation, and sessions dying on redeploy.

6 min read· mcp · ai-agents

Your LLM Bot's Reply Is Too Long for Discord

Model output doesn't respect a 2,000-character cap. Splitting naively breaks code blocks, and editing on every token is how you collect rate limits.

5 min read· discord · bots

Your Users Get Logged Out Every Time You Deploy

Two causes, both common in generated auth code — sessions kept in memory, or a signing secret regenerated at startup. Neither looks like a bug locally.

5 min read· auth · sessions

Write Logs Your AI Agent Can Actually Debug

An agent reading your logs has no memory of your architecture and a limited window. Small changes make the difference between a diagnosis and a guess.

5 min read· logging · ai-agents

Maintaining an App an AI Wrote for You

The risk isn't bad code — it's that nobody holds a model of it. Four cheap habits, and one that matters because every deploy rebuilds your image.

5 min read· vibe-coding · ai

One Smoke Test Beats a Test Suite You'll Never Write

AI tools write features, not tests. You don't need coverage — you need one check that boots the app the way the container will and proves it answers.

5 min read· testing · ci-cd

Anyone in the Channel Can Prompt Your Bot

If a stranger's message reaches your model, they can instruct it. The fix isn't a better system prompt — it's limiting what the model is allowed to do.

6 min read· security · llm

Push to `build` to Test a Build Without Touching Your Running App

Two branches are tracked, not one. `deploy` builds and replaces your container; `build` only builds — which is what you want while you're still iterating.

4 min read· git · deployment

Can You Do RAG on a Small Container? Yes, Within Limits

Calling an embedding API is cheap and fits fine. Running an embedding model doesn't — and rebuilding your index at startup means paying for it every deploy.

5 min read· rag · llm

Rate-Limiting an LLM Endpoint — Requests Aren't the Unit, Tokens Are

An endpoint that calls a model turns traffic into spend, and no hosting setting can cap it. Three layers of defence — and the one that resets on deploy.

5 min read· llm · rate-limiting

Getting Reliable JSON Out of a Model

Two failure modes, and only one is malformed syntax. Validate in code, feed the error back once, and cap the retries — because each one is billed.

5 min read· llm · json

Sending Images to a Model From a Small Container

The API accepts a 512 MB payload. Your container has 0.25 GB. Base64 adds a third on top, and you hold the original and the copy at the same time.

5 min read· llm · ai-agents

Should Your LLM Bot Read Every Message? Probably Not

Both platforms restrict message visibility by default. For a model-backed bot that default is a feature — it caps your cost, your risk, and your storage.

5 min read· llm · bots

Storing User API Keys When Your AI App Lets People Bring Their Own

Environment variables hold your app's secrets, not your users'. Per-user keys need encrypted storage — and the first question is whether to store them at all.

7 min read· ai-agents · security

Streaming LLM Responses to a Browser With SSE

Tokens appearing one by one is mostly four details — flush every chunk, send heartbeats, cancel on disconnect, and expect a deploy to cut the stream.

5 min read· sse · streaming

Switching Models Without a Rewrite

One seam makes it a config change and a restart. Without it, model choice is scattered through your code — and the cheaper model isn't always cheaper.

5 min read· llm · ai-agents

Your Agent Says It Deployed — Four Checks Before You Believe It

"Deployed successfully" means the API calls returned, not that your app works. The status is container-level, so it can be green while nothing works.

6 min read· ai-agents · mcp

Deploying an App You Built With an AI Coding Tool — A Checklist

AI-generated projects run fine locally and break in six predictable ways when deployed. Here's what to fix before you upload, and what you can leave alone.

5 min read· ai · vibe-coding

Deploy Without a Dockerfile: AI Build Agent vs. Buildpacks

You can deploy without a Dockerfile using buildpacks or an AI build agent. Here's how the two differ, where zero-config detection fails, and which to pick.

8 min read· docker · ai-agents

What You're Actually Granting When You Connect an AI Agent to Your Hosting

22 MCP tools, 8 of them read-only. But read-only isn't the same as harmless — two of those hand your agent credentials. Here's the honest breakdown.

6 min read· mcp · ai-agents