I have detailed knowledge of dynamodb. This code does not properly mimic the service exceptions, input validations, eventual consistency, or edge cases. I would not feel comfortable developing against ministack or running tests against it. A lot of these services also have free tiers, so the use cases are quite minimal.
I really don't see how any clone is going to manage to do what localstack couldn't - maintain compatibility with tons of AWS services while not getting paid for it. If this were viable, why would it not have worked before?
The only things I can think of are that perhaps LocalStack was just a mess of a codebase that couldn't maintain velocity or attract contributors, or it just failed to steward new contributors or some such thing.
If this were viable, why would it not have worked before?
Because something wasn't in place to make it work. There are millions of examples where the second mover won, often because the first mover was too early, or the tech wasn't there to make it work, or the market didn't understand the value, etc.
In this case I imagine there are three massive benefits that you'd have over being the first mover:
- AWS is more mature and therefore moving slower, so it's easier to keep up.
- AI is useful for building 80% working code, so there's a lot less to do to keep up.
- There's a lot of devs looking for ways to move off Localstack due to the price change, which gives you (potentially) a pool of willing volunteers to contribute to an OSS alternative.
You can also learn from Localstack's open source version about what's needed, what works, what doesn't work, etc.
Personally, I would get value out of really solid compatibility of the base features of a few core services (sqs, s3, kms, and maybe dynamo are the main ones that come to mind) with a light weight gui interface and persistence.
If Iām getting into esoteric features or some ābigā features that donāt make sense locally, then I just spin up a real dev account of aws, so I know Iām getting the real experience.
Interesting ā those are the ones that depending on the case, approximating them with local redis/postgres/vms without the AWS specific APIs on top is often good enough ā because my app is just talking to them over native protocols anyway.
Or I am doing something so specific, that a local emulation of the aws api isnāt ever going to be good enough, so thereās not a lot of point in trying. For example, writing code that handles automatically spinning up RDS instances from an RDS snapshot ā a local emulation of that process is going to be so far off from what would actually happen no matter what they do.
I'd put ALL the ones listed above: SQS, S3, KMS, DynamoDB, EC2, RDS, Redis in the required "core" services column, and also throw in IAM, SNS, and SecretsManager as well. Those are all table stakes imho.
I'm using all of the above in LocalStack today. Frankly, I don't believe this is as "impossible" a task as several in this thread are insinuating. It's the type of rote work you can delegate to AI to build these days, as observed in this OP.
Building a test suite to validate the state-transient mocks in question against the real deal is not difficult. Only annoyingly expensive (in time and money) if run often, which is exactly the problem they're solving.
Hello! We won't have the broad coverage that Localstack has... we're not aiming to be the "next Localstack"... just want to keep the core services that were available for free in the LS community up to date. If youāre looking for larger services like MWAA, sorry, but we won't be supporting them.... Most core AWS services don't receive many updates anyway (their APIs donāt change drastically or frequently)
If youāre looking for a Localstack alternative, itās often because you were using the community tier... In that case, Ministack can serve as a drop-in replacement... otherwise, the price reduction in LS might already address your needs
That's true if you assume making these things is manual work. But of course with well documented API service and AI coding tools, making a functional local equivalent of any given service is not all that hard.
Cloning the API surface is cheap, but once you try to match edge-case behavior across auth and retries you spend way more time than most weekend projects can justify.
You fake half the error modes or your test rig drfits from prod fast.
I am currently implementing S3, with correct error handling for edge cases. Its been about a month and I have almost the whole API surface done, with some gaps (you actually need a broader surface eg some IAM, KMS encrytion needs a persistence layer so only done sse-c so far). Close to the point where you could drop it in as a local emulation tool, its a sub 9MB binary (Rust).
Literally as I write this the AI code review said "suspended-bucket current-version selection is still wrong when the numbered version and the newer null version land in the same millisecond." - thats the level of detail you have to deal with.
"LocalStack was just a mess of a codebase" - very true.
I do think there's potential to semi-automatically create a compatible suite of services, but it'll require some very talented use of LLMs and some novel testing approaches. Not something I want to sign up for.
I evaluated Floci, but that has the typical issues you'd expected with freshly minted vibe code.
I suppose (among many other things) LLMs are changing this. We no longer need that many contributors when we can use AWS docs, intercept AWS API calls and give it to AI agent to mimic. Of course, contributors are still needed for maintaining tests and validations.
The real issue with LocalStack was always drift. Tests pass locally, then something breaks in staging because the S3 response format is slightly different or DynamoDB throttling doesn't match. After getting burned enough times we just switched to short-lived real AWS environments for integration tests. More expensive, but way fewer surprises in prod.
i would imagine localstack is a sniff-test - aka, if it doesn't pass localstack, you don't run the more expensive real AWS integration test. In other words, like food, you don't eat the cost unless it passes the sniff test.
Any project with Claudeās signature misaligned ASCII diagram just screams DONāT USE to me. If you canāt even bother to read your damn generated README, how do I know you have QCāed anything else? At the very least supported features claimed in README / on website could be totally fake, which is extremely common among all the vibed Show HNs.
I love how a comment pointing out glaring lack of human review of this project (with clear evidence) is flagged to death. With zero counter-argument no less. Canāt wait for the bright future of vibed crap with zero human quality control getting hacked every day.
To be that guy for a moment: those are not ASCII as those characters are not in the standard 7-bit ASCII set. The closest you get to rounded corners with just ASCII is something like:
/-----\ .-----.
| bah | or | bah | (the latter usually looks best IMO, but that can depend on font)
\-----/ `-----'
You'd get away with calling the linked diagram ANSI. While that is technically incorrect most people accept the term for something that uses one of the common 8-bit character sets that include those box-drawing characters (CP437, CP850, ISO-8859, Win1252, ā¦), because that is what MS has for a long time called Win1252 in its tools.
> is already a red flag
I wouldn't call using box-drawing characters a red flag, I've known people use them this way for years and do so myself. The LLM generates them because they were in its training data because people use them. It might be something to consider amongst other flags but I don't consider it a strong signal on its own. The red flag for me is the alignment - if you are going to have your documentation ghostwritten at least make the effort to do a cursory editing pass afterwards.
My visceral AI disgust response here is just a subset of my more general lazyly-slapped-together-without-sufficient-testing-or-other-review disgust response. If it doesn't look bad in that way, whether hand-made or ghostwritten, then I'll not react to it that way. But if someone can't be bothered to do a simple clean-up pass on that documentation, what mess could they have left in the code too?
As far as I'm concerned the social contract (āthe rulesā) has already been broken by people taking insufficient care, and my reaction to that is a healthy one from the PoV of self-preservation. Acting in good faith works both ways, or it doesn't.
Ugh, I hadn't heard the news about the LocalStack licensing changes. I had some great results building AWS services for local dev as well as CI/CD and testing in GH actions with LocalStack in previous jobs.
I secretly always hoped Amazon would buy out LocalStack and make it the official free local development environment for AWS work, but I guess it probably would reduce revenues spent on AWS based dev and test environments. The compatibility with the AWS CLI was mostly excellent in my experiences.
Unclear what LocalStack's end game is tbh. My company has an active enterprise license atm so their recent changes won't affect me in the short term at least. As of writing I'm still a happy user of LocalStack. Disappointed with their overall direction, but I hold no ill will and I'm sure they had their reasons. I wish them luck.
Hopefully this change was not just an short term attempt to lock in current enterprise customers by shoring up existing income streams. That'll only work in the VERY short term.
It's not difficult to forsee the inevitable customer drain to free competitors or private one-shots easily produced by genai from publicly available AWS SDK code. Maybe they're already feeling that pressure and that's all this change is. I hope not.
AFAICT, they have no appreciable moat to retain customers long term. For example, I have absolutely no interest in their "Pods" or even their console UI, so thosr aren't keeping me around forever. For their sakes I hope they're still shopping themselves around and didn't take some VC poison pill with preconditions for killing the community edition. Really It's anyone's guess though.
> The compatibility with the AWS CLI was mostly excellent in my experiences.
Interesting, I've had the opposite experience. Every single AWS service I've ever tried to build tests around with LocalStack has run into compatibility issues. Usually something works in LocalStack but fails when it hits the real endpoint.
I guess the CLI itself has mostly worked, its more the LocalStack service not behaving the way the real service is documented/works.
Got any concrete examples? I've been happily using LocalStack for roughly a decade now and haven't run into a single compatibility issue, aside from the obvious missing of net new services for the first N months after AWS product launches. Things like AppConfig, etc, but those gaps got filled in time. They clearly prioritized the 95pct/most used features of each service first though. There's a long tail in some AWS services, as one might expect. I've never used any of the more esoteric AWS feature sets of any of their services. Those are the things that tend to end up deprecated. So requiring those long tail featur sets may be the simple answer to having very different experiences.
Thus far I've tried that (rejected), Floci (not great), and now looking at this.
This one is 7 days old.
I'm eager to have a localstack replacement, but these are a long way off from being mature enough. I suppose this is just the new state of software? Shiny website, big claims, AI coded, insufficiently tested.
Out of curiosity, why did you reject Floci? It lacked some feature I needed, so I just went ahead and added them. My needs were not that complex and it has patterns to test that implementations match AWS. I agree itās lacking things, but the bones arenāt that bad.
for most teams the pain was not missing features -- it was drift. you build against the emulator for months, then hit some edge case in prod where the S3 response format differed slightly or DynamoDB error codes were not qui
Drift feels inevitable here. AWS keeps evolving, so any local emulator will eventually diverge. At some point itās more about how much drift you can tolerate than missing features.
I have detailed knowledge of dynamodb. This code does not properly mimic the service exceptions, input validations, eventual consistency, or edge cases. I would not feel comfortable developing against ministack or running tests against it. A lot of these services also have free tiers, so the use cases are quite minimal.
Mostly I think its not about cost, it is about iteration speed and ability to run in CI environments fast.
I'm frustrated with the Localstack license changes and will evaluate ministack.
But, for anybody else who needs a quick fix - you can pin to the `community-archive` tag and it should unblock you quickly:
https://hub.docker.com/layers/localstack/localstack/communit...
I really don't see how any clone is going to manage to do what localstack couldn't - maintain compatibility with tons of AWS services while not getting paid for it. If this were viable, why would it not have worked before?
The only things I can think of are that perhaps LocalStack was just a mess of a codebase that couldn't maintain velocity or attract contributors, or it just failed to steward new contributors or some such thing.
If this were viable, why would it not have worked before?
Because something wasn't in place to make it work. There are millions of examples where the second mover won, often because the first mover was too early, or the tech wasn't there to make it work, or the market didn't understand the value, etc.
In this case I imagine there are three massive benefits that you'd have over being the first mover:
- AWS is more mature and therefore moving slower, so it's easier to keep up.
- AI is useful for building 80% working code, so there's a lot less to do to keep up.
- There's a lot of devs looking for ways to move off Localstack due to the price change, which gives you (potentially) a pool of willing volunteers to contribute to an OSS alternative.
You can also learn from Localstack's open source version about what's needed, what works, what doesn't work, etc.
Personally, I would get value out of really solid compatibility of the base features of a few core services (sqs, s3, kms, and maybe dynamo are the main ones that come to mind) with a light weight gui interface and persistence.
If Iām getting into esoteric features or some ābigā features that donāt make sense locally, then I just spin up a real dev account of aws, so I know Iām getting the real experience.
> getting into esoteric features
The problem is that everybody needs different "core" features
> > compatibility of the base features of a few core services (sqs, s3, kms, and maybe dynamo are the main ones that come to mind)
For instance, I don't care about any of those features at all. But I would care a lot about EC2, RDS, and ElastiCache Redis
Interesting ā those are the ones that depending on the case, approximating them with local redis/postgres/vms without the AWS specific APIs on top is often good enough ā because my app is just talking to them over native protocols anyway.
Or I am doing something so specific, that a local emulation of the aws api isnāt ever going to be good enough, so thereās not a lot of point in trying. For example, writing code that handles automatically spinning up RDS instances from an RDS snapshot ā a local emulation of that process is going to be so far off from what would actually happen no matter what they do.
I'd put ALL the ones listed above: SQS, S3, KMS, DynamoDB, EC2, RDS, Redis in the required "core" services column, and also throw in IAM, SNS, and SecretsManager as well. Those are all table stakes imho.
I'm using all of the above in LocalStack today. Frankly, I don't believe this is as "impossible" a task as several in this thread are insinuating. It's the type of rote work you can delegate to AI to build these days, as observed in this OP.
Building a test suite to validate the state-transient mocks in question against the real deal is not difficult. Only annoyingly expensive (in time and money) if run often, which is exactly the problem they're solving.
Hello! We won't have the broad coverage that Localstack has... we're not aiming to be the "next Localstack"... just want to keep the core services that were available for free in the LS community up to date. If youāre looking for larger services like MWAA, sorry, but we won't be supporting them.... Most core AWS services don't receive many updates anyway (their APIs donāt change drastically or frequently)
> We won't have the broad coverage that Localstack has... we're not aiming to be the "next Localstack"
you should tell that to the LLM that writes your website:
> MiniStack is your free, MIT-licensed drop-in replacement.
is it a drop-in replacement, or not?
If youāre looking for a Localstack alternative, itās often because you were using the community tier... In that case, Ministack can serve as a drop-in replacement... otherwise, the price reduction in LS might already address your needs
That's true if you assume making these things is manual work. But of course with well documented API service and AI coding tools, making a functional local equivalent of any given service is not all that hard.
Cloning the API surface is cheap, but once you try to match edge-case behavior across auth and retries you spend way more time than most weekend projects can justify.
You fake half the error modes or your test rig drfits from prod fast.
I am currently implementing S3, with correct error handling for edge cases. Its been about a month and I have almost the whole API surface done, with some gaps (you actually need a broader surface eg some IAM, KMS encrytion needs a persistence layer so only done sse-c so far). Close to the point where you could drop it in as a local emulation tool, its a sub 9MB binary (Rust).
Literally as I write this the AI code review said "suspended-bucket current-version selection is still wrong when the numbered version and the newer null version land in the same millisecond." - thats the level of detail you have to deal with.
"LocalStack was just a mess of a codebase" - very true.
I do think there's potential to semi-automatically create a compatible suite of services, but it'll require some very talented use of LLMs and some novel testing approaches. Not something I want to sign up for.
I evaluated Floci, but that has the typical issues you'd expected with freshly minted vibe code.
idk maybe AWS should create one?
I mean, if we can use "virtual-AWS", it would dramatically lower entry-barrier for devs/companies who are scared of "tales of huge aws bills" and such
It hasnt really been a barrier to entry though has it, cloud adoption is doing just fine.
I suppose (among many other things) LLMs are changing this. We no longer need that many contributors when we can use AWS docs, intercept AWS API calls and give it to AI agent to mimic. Of course, contributors are still needed for maintaining tests and validations.
and then the maintainer goes on a rant about accurate but agentically coded pull requests and doesnāt merge it
The real issue with LocalStack was always drift. Tests pass locally, then something breaks in staging because the S3 response format is slightly different or DynamoDB throttling doesn't match. After getting burned enough times we just switched to short-lived real AWS environments for integration tests. More expensive, but way fewer surprises in prod.
i would imagine localstack is a sniff-test - aka, if it doesn't pass localstack, you don't run the more expensive real AWS integration test. In other words, like food, you don't eat the cost unless it passes the sniff test.
Any project with Claudeās signature misaligned ASCII diagram just screams DONāT USE to me. If you canāt even bother to read your damn generated README, how do I know you have QCāed anything else? At the very least supported features claimed in README / on website could be totally fake, which is extremely common among all the vibed Show HNs.
https://github.com/Nahuel990/ministack/blob/a1b1d20a27d2238d...
I love how a comment pointing out glaring lack of human review of this project (with clear evidence) is flagged to death. With zero counter-argument no less. Canāt wait for the bright future of vibed crap with zero human quality control getting hacked every day.
But brother, he is shipping at inference speed!
ASCII with rounded corners is already a red flag, let alone not being able to check if it's aligned. Claude LOVES these.
Something more realistic would be:
+-----+
| foo |
+-----+
> ASCII with rounded corners
To be that guy for a moment: those are not ASCII as those characters are not in the standard 7-bit ASCII set. The closest you get to rounded corners with just ASCII is something like:
You'd get away with calling the linked diagram ANSI. While that is technically incorrect most people accept the term for something that uses one of the common 8-bit character sets that include those box-drawing characters (CP437, CP850, ISO-8859, Win1252, ā¦), because that is what MS has for a long time called Win1252 in its tools.> is already a red flag
I wouldn't call using box-drawing characters a red flag, I've known people use them this way for years and do so myself. The LLM generates them because they were in its training data because people use them. It might be something to consider amongst other flags but I don't consider it a strong signal on its own. The red flag for me is the alignment - if you are going to have your documentation ghostwritten at least make the effort to do a cursory editing pass afterwards.
Yeah. Could at least run a formatter on it afterwards... You can even configure a hook for Claude to do that.
We live in the golden age of slop. It seems a surprisingly small number of people have the visceral AI disgust response.
Maybe that visceral response being against the rules (assume good faith) and actively being punished explains the small number of people doing it?
My visceral AI disgust response here is just a subset of my more general lazyly-slapped-together-without-sufficient-testing-or-other-review disgust response. If it doesn't look bad in that way, whether hand-made or ghostwritten, then I'll not react to it that way. But if someone can't be bothered to do a simple clean-up pass on that documentation, what mess could they have left in the code too?
As far as I'm concerned the social contract (āthe rulesā) has already been broken by people taking insufficient care, and my reaction to that is a healthy one from the PoV of self-preservation. Acting in good faith works both ways, or it doesn't.
Ugh, I hadn't heard the news about the LocalStack licensing changes. I had some great results building AWS services for local dev as well as CI/CD and testing in GH actions with LocalStack in previous jobs.
I secretly always hoped Amazon would buy out LocalStack and make it the official free local development environment for AWS work, but I guess it probably would reduce revenues spent on AWS based dev and test environments. The compatibility with the AWS CLI was mostly excellent in my experiences.
Unclear what LocalStack's end game is tbh. My company has an active enterprise license atm so their recent changes won't affect me in the short term at least. As of writing I'm still a happy user of LocalStack. Disappointed with their overall direction, but I hold no ill will and I'm sure they had their reasons. I wish them luck.
Hopefully this change was not just an short term attempt to lock in current enterprise customers by shoring up existing income streams. That'll only work in the VERY short term.
It's not difficult to forsee the inevitable customer drain to free competitors or private one-shots easily produced by genai from publicly available AWS SDK code. Maybe they're already feeling that pressure and that's all this change is. I hope not.
AFAICT, they have no appreciable moat to retain customers long term. For example, I have absolutely no interest in their "Pods" or even their console UI, so thosr aren't keeping me around forever. For their sakes I hope they're still shopping themselves around and didn't take some VC poison pill with preconditions for killing the community edition. Really It's anyone's guess though.
> The compatibility with the AWS CLI was mostly excellent in my experiences.
Interesting, I've had the opposite experience. Every single AWS service I've ever tried to build tests around with LocalStack has run into compatibility issues. Usually something works in LocalStack but fails when it hits the real endpoint.
I guess the CLI itself has mostly worked, its more the LocalStack service not behaving the way the real service is documented/works.
Got any concrete examples? I've been happily using LocalStack for roughly a decade now and haven't run into a single compatibility issue, aside from the obvious missing of net new services for the first N months after AWS product launches. Things like AppConfig, etc, but those gaps got filled in time. They clearly prioritized the 95pct/most used features of each service first though. There's a long tail in some AWS services, as one might expect. I've never used any of the more esoteric AWS feature sets of any of their services. Those are the things that tend to end up deprecated. So requiring those long tail featur sets may be the simple answer to having very different experiences.
Another alternative, earlier on HN: https://news.ycombinator.com/item?id=47420619
I liked the transparency: "Built entirely with AI by Jack Danger | All prompts saved in prompts/"
Thus far I've tried that (rejected), Floci (not great), and now looking at this.
This one is 7 days old.
I'm eager to have a localstack replacement, but these are a long way off from being mature enough. I suppose this is just the new state of software? Shiny website, big claims, AI coded, insufficiently tested.
Out of curiosity, why did you reject Floci? It lacked some feature I needed, so I just went ahead and added them. My needs were not that complex and it has patterns to test that implementations match AWS. I agree itās lacking things, but the bones arenāt that bad.
> Copyright (c) 2024 MiniStack Contributors
Already lying or totally unreviewed AI slop ?
Hey yeah sorry I copied from an old repo I had... Thanks for the contribution <3 https://github.com/Nahuel990/ministack/blob/master/CHANGELOG...
slop copy
Whatās the gcp equivalent
for most teams the pain was not missing features -- it was drift. you build against the emulator for months, then hit some edge case in prod where the S3 response format differed slightly or DynamoDB error codes were not qui
Drift feels inevitable here. AWS keeps evolving, so any local emulator will eventually diverge. At some point itās more about how much drift you can tolerate than missing features.