LocalEmu, a free, open-source AWS emulator: run 132 AWS services locally with one pip install (localemu.cloud)
from nullroute@programming.dev to programming@programming.dev on 27 Jun 07:53
https://programming.dev/post/52634457

I maintain LocalEmu, a free and open-source (Apache 2.0) AWS emulator. It started as a fork of the archived LocalStack Community edition. The goal is to keep a genuinely free, open local AWS emulator alive and maintained.

What it does:

Why I built it: kill the multi-minute deploy loop, drop the dev/test AWS bill to zero, and stop keeping real credentials on dev machines.

It’s for fast local dev, testing, and learning, not production, and not bit-for-bit parity with the real cloud.

Repo: github.com/localemu/localemu Site: localemu.cloud

Happy to answer questions, and feedback is very welcome.

#programming

threaded - newest

Xanvial@lemmy.world on 27 Jun 09:34 next collapse

This is awesome, will try to use it

nullroute@programming.dev on 27 Jun 11:14 collapse

Appreciate it :). Ping me on GitHub if you hit any snags, feedback very welcome.

jtrek@startrek.website on 27 Jun 12:10 next collapse

Interesting. We used the free localstack at a previous job and it kind of sucked. Mostly we were trying to do S3, and it made adding a lot of files kind of painful. Looks like this has better support for “I need to load a bunch of files into S3 when I start working”.

Can you map a directory and subfolders to S3 with this, or so you need to make calls to “upload” everything?

nullroute@programming.dev on 27 Jun 12:36 collapse

Thanks for trying LocalEmu :). Yes, you can map a directory without scripting per-file uploads.

aws s3 sync ./mydir s3://mybucket/ works against LocalEmu out of the box (or awsemu s3 sync with the bundled zero-config CLI). For “always populated on start”, drop a one-line script in /etc/localemu/init/ready.d/ and it runs on every boot:

docker run --rm -d -p 4566:4566 \
  -v $PWD/fixtures:/fixtures:ro \
  -v $PWD/init:/etc/localemu/init/ready.d:ro \
  -e DASHBOARD_API_OPEN=1 localemu/localemu

Where init/ready.d/seed.sh does awsemu s3 sync /fixtures s3://mybucket/. Or PERSISTENCE=1 if you’d rather load once and have it stick.

LocalStack inspired a lot of this, we’re the free open-source continuation.

refalo@programming.dev on 27 Jun 14:24 next collapse

is this vibe-coded

Hexarei@beehaw.org on 27 Jun 14:54 next collapse

If the project itself is vibe coded, the author is doing a good job of hiding it. There’s some slight lean towards claude-like speak, (“real behavior” and the way some of the readme sounds) but the commit style and comments and such don’t immediately trigger the obvious LLM alarms in my head.

That website is definitely vibe coded though. I’ve seen enough one-shot websites from LLMs while playing around with them to immediately notice the AI website style lol

nathan@piefed.alphapuggle.dev on 27 Jun 15:17 collapse

<img alt="" src="https://piefed.alphapuggle.dev/static/media/posts/GU/BF/GUBFcTgVeC5qrOE.png"> Permalink

First file I clicked on has very claude-speak comments. Actually I was so focused on the writing style I didn’t even realize those were em-dashes. Pics on the website are definitely AI gen (warping on the grid lines)

Looks like the author is trying to hide it by stripping Claude off of the commits and having no CLAUDE/AGENTS.md. Says its a fork of localstack but repo layout seems to differ, and that did have an AGENTS.md

Hexarei@beehaw.org on 27 Jun 15:21 collapse

Ah ha! Yep, I didn’t see any of the big long form comments like that one, good catch. I scrolled through some of the commits and apparently got unlucky.

Evotech@lemmy.world on 27 Jun 16:33 collapse

Definitely

[deleted] on 27 Jun 15:21 collapse
.
nullroute@programming.dev on 27 Jun 16:07 collapse

Hey, thanks for the comments, let me answer all three at once.

Yes, parts of the LocalEmu code are generated with an LLM (Claude, mostly). It is very controlled and architected by me. I have written enough code over the years to understand what I am doing and what the LLM is doing, and what ships under my name is my call and my responsibility.

Let me ask back: what does the fact that parts of the code are LLM-generated change about the final result? The repo is Apache-2.0 and public. The behaviour is testable. If something is wrong, I would like to know so I can fix it. If it works, why does the way it was typed matter?

I genuinely do not understand the hostility against people who use AI tools and know what they are doing. I am not ashamed of using the tools this era gives me to improve my productivity and ship something useful. The opposite: I would be ashamed if I could not design and code these things myself when I need to. I can. It would just take much longer, and I accept that.

I am not competing with LLMs. Claude, GPT, Cursor, whatever you use, they win the war of producing a lot of code quickly, sometimes better than I would. They also help me with the tasks I do not have time for on a side project: documentation, unit tests, E2E tests. And honestly, designing a website or a landing page with the right CSS. I love the result. I never had the time in my career to learn the frontend side properly, and for a backend / CLI guy like me, LLMs are something amazing here. That is the part of the project that is the most LLM-shaped, and I am not going to pretend otherwise.

We are in an accelerated AI era and every developer gets to decide if they want to ride the wave or not. I have my own opinion about it, but that debate is not what this post is about and I do not want to hijack the thread with it.

The post is about sharing a project I maintain with my own time and energy, looking for a community that shares the goal of making it grow. Maybe other projects after that with the same community, or parts of it. If you have a use case, a bug, a missing service or a workflow LocalEmu does not handle yet, that is what I would love to hear about.

PRs and issues are welcome: github.com/localemu/localemu