Skip to content

Remocal Software Development

Remocal (remote + local) is a developer workflow where your code lives on your machine, but your app runs where it's meant to — in the cloud, in containers, on edge networks, or wherever your users actually hit. Build locally, deploy remotely, get fast feedback without waiting for CI pipelines or switching between environments.

TL;DR

Local-firstRemote-firstRemocal
Fast editing & great toolingProduction-grade environmentsBoth
Instant iterationReal APIs, real infrastructureInstant iteration, real infra
Drifts from productionSlow, painful feedback loopMatches prod, tight loop
CheapExpensive per developerCheap shared infra, small ephemeral slice

What is remocal?

Traditional workflows force a choice:

  • Local-first — fast to iterate, but mocked dependencies drift from production. Bugs that only show up on one laptop are nobody's idea of fun.
  • Remote-first — accurate, but every change costs you a build, push, deploy & wait. Feedback stretches from seconds to minutes.

Remocal bridges the gap. You keep your editor, your debugger & your hot-reload. Your dependencies — databases, queues, APIs, auth providers — run in a real, deployed environment. A local change hits real infrastructure in seconds, not minutes.

The word itself is a portmanteau: remote + local. It overlaps with "inner dev loop" tooling but is broader — remocal is the pattern, not any single tool. It also overlaps heavily with ephemeral environments: remocal is how developers consume ephemeral environments day-to-day.

Why do remocal?

For developers

  • Tight feedback loop — skip the build-push-deploy cycle for small changes.
  • Real integration points — test against the actual database, queue, or third-party API, not a mock that lies to you.
  • Keep your tools — your IDE, debugger, profiler & shell stay on your machine.
  • Catch environment bugs earlier — IAM permissions, network ACLs, cold starts & region-specific quirks all surface before merge, not after.

For teams & product managers

  • Fewer "works on my machine" bugs — shared remote dependencies mean consistent behaviour across the team.
  • Less staging contention — developers stop fighting over a single shared staging environment.
  • Faster cycle time — shorter feedback loops mean more iterations per day, which means features ship sooner.
  • Cheaper than per-developer full clusters — only the code under test runs per-developer; shared dependencies stay shared.

Trade-offs to be aware of

  • Requires a working network connection. Planes, trains & patchy coffee-shop wifi get harder.
  • Someone has to own the remote infrastructure & keep it healthy — this is platform work.
  • Not every piece of a stack makes sense to run remotely. Unit tests & pure functions belong local.
  • Debugging across the local/remote boundary is harder than fully-local. Logging & tracing discipline matters more.
  • Secrets management gets more complex — your local process now needs credentials for real cloud resources.

How to remocal

The pattern is tool-agnostic. Whatever your stack — serverless, Kubernetes, containers on VMs — the same primitives apply.

Parameterise your infrastructure

Your IaC almost certainly already takes an environment parameter (dev, staging, prod). Add an ephemeralId so each developer — or each branch, or each PR — can spin up their own isolated slice.

stack-name: myapp-{environment}-{ephemeralId}

Naming matters. Prefix every resource with the same identifier so it's obvious at a glance what's ephemeral & safe to tear down.

Isolate at the application layer, not the account layer

Running a full cloud account per developer is expensive, slow to provision & a nightmare to keep in sync with production. Isolate at the application level instead — unique stack names, unique resource prefixes, unique database schemas — all inside a shared dev account.

This is the single most important decision when designing a remocal setup. Get it right & onboarding a new developer is a one-command operation. Get it wrong & you've built a second production environment to maintain.

Share the expensive dependencies

Not every resource needs to be per-developer. The cost saving comes from being deliberate about what's shared vs what's ephemeral.

Per-ephemeralShared
Application code (Lambdas, containers)VPC & subnets
API Gateway / load balancer routesNAT gateway
App-specific queues & topicsObservability (logs, metrics, traces)
App-specific database schemasShared seed data & reference data
Feature-branch configIdentity provider / auth

Make teardown automatic

Ephemeral means ephemeral. Tie the lifetime of a remocal environment to the lifetime of a branch, PR, or working session. Tag every resource with ephemeralId so a single command — or a scheduled cleanup job — can destroy everything belonging to a dead branch.

Nothing kills a remocal setup faster than orphaned stacks racking up a cloud bill.

Route traffic to your local process

For services running in a cluster, tools like mirrord or Telepresence intercept traffic bound for a deployed pod & forward it to your local process. The pod keeps its identity, its env vars & its network neighbours — but the code running is the one on your laptop with breakpoints set.

For serverless stacks, the equivalent is deploying the single function under test per-developer & letting the rest of the stack stay shared. SST, AWS SAM Accelerate & Serverless framework workflows all support this.

Suggested adoption order

  1. Get environment into every IaC parameter.
  2. Add ephemeralId & make sure it flows through to every resource name.
  3. Split your stack into "shared" & "ephemeral" layers.
  4. Wire up a deploy-my-branch command that any developer can run.
  5. Add automatic teardown on branch delete or PR merge.
  6. Layer on traffic-interception tooling if your stack needs it.

Who is doing remocal?

The tooling landscape is growing. Notable entries:

ToolStack focusWhat it does
mirrordKubernetesRun a local process in the context of a remote pod
TelepresenceKubernetesTwo-way proxy between local & remote clusters
GardenKubernetesBuild, test & deploy from local to remote
TiltKubernetesContinuous sync of local source to remote cluster
SkaffoldKubernetesSimilar — continuous deploy loop
DevSpaceKubernetesSimilar, with stronger dev-container focus
SSTAWS serverlessPer-developer stacks as first-class workflow
AWS SAM AccelerateAWS serverlesssam sync for fast per-developer iteration
Serverless FrameworkAWS serverlessserverless dev to run functions locally connected to AWS
AmptAWS serverlessampt for a developer-sandbox deployment
DockerLocal-first AIPromotes "Remocal + Minimum Viable Models" for AI dev

Remocal is also how most mature serverless teams have worked for years, often without calling it that — per-developer stacks against a shared dev account is the default for teams using CDK, SST, Serverless Framework or SAM at any scale.