Skip to content

v2 Getting Started (AWS)#606

Draft
remotesynth wants to merge 23 commits into
mainfrom
revise-getting-started
Draft

v2 Getting Started (AWS)#606
remotesynth wants to merge 23 commits into
mainfrom
revise-getting-started

Conversation

@remotesynth
Copy link
Copy Markdown
Collaborator

@remotesynth remotesynth commented Apr 24, 2026

This PR is still in early draft form.

The concepts behind this draft:

  1. Design paths for the main LocalStack use cases
  2. Simplify the quickstart to get them to success faster
  3. Have both an awslocal and a terraform quickstart
  4. Bring AI and agent use cases up front

DOC-12

The concepts behind this draft:

1. Design paths for the main LocalStack use cases
2. Simplify the quickstart to get them to success faster
3. Have both an awslocal and a terraform quickstart
4. Bring AI and agent use cases up front

[DOC-12](https://linear.app/localstack/issue/DOC-12/docs-quickstart-v2)
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Apr 24, 2026

Deploying localstack-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: df7a4ec
Status: ✅  Deploy successful!
Preview URL: https://f6265903.localstack-docs.pages.dev
Branch Preview URL: https://revise-getting-started.localstack-docs.pages.dev

View logs

@quetzalliwrites quetzalliwrites marked this pull request as draft April 27, 2026 12:17
@quetzalliwrites
Copy link
Copy Markdown
Collaborator

added do not merge label + made it a draft to avoid any accidental merges @remotesynth 😸

Copy link
Copy Markdown
Contributor

@peter-smith-phd peter-smith-phd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for sharing this PR. It's really nice to see the focus of Local, CI, and AI, and the working example is the perfect size to get something up and running in 10 minutes.

But, I think there's more trimming to be done. There's still a lot of complexity in these pages that go beyond "Getting Started". It'd suggest you document the happy path for the common case, and just hyperlink to the more advanced pages for more detail. If we can't get the happy path working well, then we need to fix the software to make it work better.

- **Validate IaC before applying** — Deploy your Terraform, CDK, or CloudFormation to LocalStack first. Confirm it works the way you expect before applying to a real AWS environment.
- **Safe experimentation** — Explore new AWS services and architectures freely, with no risk to production systems.

LocalStack for AWS also includes advanced capabilities for teams: [Cloud Pods](/aws/capabilities/state-management/cloud-pods/) for sharing and restoring state, [IAM policy enforcement](/aws/capabilities/security-testing/iam-policy-enforcement/), [Chaos Engineering](/aws/capabilities/chaos-engineering/), and more.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that IAM Policy enforcement is just a standard part of AWS's IAM service, this doesn't feel like it's something to brag about. Can we instead mention the ability to disable enforcement, and instead detect policy violations with tools like App Inspector?

{
title: 'AI & Agent Workflows',
description:
'Connect LocalStack to your AI coding assistant via the MCP server, or deploy infrastructure automatically using LocalStack Skills.',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So has the MCP server been officially bless by PM as part of our product offering? (I feel it should be, but I many folks probably see it as a DevRel thing).


### lstk

`lstk` is a lightweight, Go-based CLI that handles the full startup sequence in one command: browser-based login, image pull, and container launch.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the "Go-based" part relevant to users? I know it was an internal switch from Python -> Go, and that's a big deal within LocalStack, but why would customers care?


The quickest way get started with LocalStack is by using the LocalStack CLI.
It allows you to start LocalStack from your command line.
There are two CLI options for running LocalStack on your laptop. Start with `lstk` if you want the fastest path to a running instance, or use the LocalStack CLI if you need full feature support.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm hoping that by end of June, we should recommend lstk as the only path forward. Of course, if this PR gets merged sooner than that, you need both versions.

### LocalStack CLI

The full-featured LocalStack CLI gives you access to all LocalStack capabilities.
Please make sure that you have a working [Docker installation](https://docs.docker.com/get-docker/) on your machine before moving on.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm pretty sure lstk also requires Docker.


## Overview

LocalStack works great in CI environments, allowing your integration tests to run incredibly fast and with no cloud costs.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I read this section, I struggled a bit with the complexity. This all great information, but it doesn't feel like a "Getting Started" type of topic. I would suspect that customers will only start using LocalStack in CI once they've already got familiar with LocalStack's "local development" model.

I don't think it hurts to keep the "Key differences from local development" information, but the effort to get LocalStack running in CI is more of an advanced topic for later in the docs. It doesn't feel like 5-10 minutes to get a meaningful experience.


## Overview

AI-assisted development workflows need a fast and secure environment to develop and test in.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really love this page! It definitely feels like a quick start type of introduction, although I'm missing the actual example to run.

Perhaps you could provide a sequence of prompts for each of the main steps? For example, "Build a Terraform-based application to do blah blah blah", then "deploy this application to LocalStack", then "test this application with..."

That would be great to take it beyond a list of facts, to get an actual running example.

## Choose your path

<SectionCards
sections={[
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everyone of these paths skips me over the "Installation" section, was that intentional? I also don't get much information about the "Auth Token" unless I explicitly click on the navigation bar.

I guess it depends on whether you're nudging the user toward getting up and running ("Local Development") or whether you just want to provide them with fact ("CI/CD" and "AI & Agent").


The Auth Token is required to activate the LocalStack for AWS core cloud emulator. It identifies and authenticates users outside the LocalStack Web Application.
It primarily accesses your workspace and advanced services & features.
The Auth Token activates LocalStack for AWS. It ties the running instance to your workspace and license and is required whenever you use LocalStack for AWS.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the Installation page, there's no reference to Auth token, which is a basic requirement to get LocalStack started. Could we add a half-page summary of what's required to get your auth token configured on that page, instead of going into a lot of detail on this page?

In general, this "Auth Token" page goes into a lot of complex detail (e.g. CI, Docker Compose) that seems to be beyond "Getting Started". Should it be moved into a later section, and perhaps just link those page from here?

order: 5
order: 7
---

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This FAQ is long, and I'd bet that most of it isn't "Getting Started" material. If the user finds themselves getting stuck during the Getting Started process, then we need to fix the software, rather than trying to document-around the complexity.

These FAQs are all very important, but just out of place in this section.

title="LocalStack on Kubernetes (Enterprise)"
href="/aws/enterprise/kubernetes/"
client:load
>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Kubernetes card falling into a full-width row below the 2-column grid looks a bit accidental. Since it's Enterprise-only anyway, might be worth giving it a distinct visual treatment (badge, different border,etc) so it looks intentional.

{
title: 'Local Development',
description:
'Set up LocalStack on your laptop and get a serverless app running in under 10 minutes. Deploy Lambda functions, DynamoDB tables, and more — no AWS account needed.',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Almost every new user should start with Local Development, but the page doesn't tell them that. Worth adding something like "New to LocalStack? Start here →" on that card so first-timers aren't left guessing.

@quetzalliwrites
Copy link
Copy Markdown
Collaborator

PR Audit Summary

Status: Needs Significant Rework

This PR introduces several critical technical inaccuracies, broken code snippets, and information architectural redundancies. To maintain our technical integrity and avoid introducing "docs debt," the following must be addressed before merging.

Technical & Architectural Requirements

1) Technical Accuracy (High Priority)

2) Code Integrity (Blockers):

All code blocks must be validated and "copy-paste ready" before deployment.

3) Documentation Information Architecture (DRY Principles):

4) Editorial Standards:

  • Voice & Tone: The current draft uses informal, "blog-style" phrasing (e.g., "That's the win"). We are reverting this to a proffesional, technical documentation voice to maintain authority.

  • Punctuation: Consistent with our style guide, we are replacing the over use of em-dashes with colons or period breaks to remove AI-generated markers + improve readability.

Screenshot 2026-05-26 at 9 38 54 PM

Why this is necessary:

We are holding this PR to ensure the "Getting Started" experience (the most high-traffic area of our site) is technically accurate and the information architecture is consistent. Merging in the current state would introduce immediate technical debt and user friction.

@quetzalliwrites
Copy link
Copy Markdown
Collaborator

Information Architecture Realignment: Removing Quickstart Anti-Pattern

As part of the v2 Getting Started experience, I am realigning our information architecture (and sidebar hierarchy) to resolve a long-standing architectural anti-pattern: housing a specific Quickstart tutorial within the general "Getting Started" folder.

Rationale for the Restructure:

  • Eliminating Cognitive Load: Titling a page "Local Development" while the internal content refers to it as a "Quickstart" creates a significant disconnect for the user. Users expect "Local Development" to cover core operational concepts (persistence, networking, dev loops); finding a specific Lambda/DynamoDB tutorial instead is a misleading user experience.

  • Getting Started as a Journey: Industry standard dictates that "Getting Started" is a high-level journey. Covering the Overview, Installation, and initial Configuration. It is the foundation, not the specific implementation.

  • Decoupling Content Types: A Quickstart is a specific functional recipe, whereas Getting Started is system onboarding. To scale effectively, we must decouple these. This realignment is the first step toward our Quickstart Library (currently tracked in this Linear DOCS Project), mirroring the successful developer experiences of enterprise leaders like Stripe and HashiCorp.

Action Taken: I am stripping the "Quickstart" branding from the "Local Development" page and reframing it as a declarative guide for deploying your first local serverless API. This ensures the folder remains a cohesive onboarding path, while the upcoming Quickstart Library will serve as the dedicated home for specialized, multi-language recipes.

@quetzalliwrites quetzalliwrites changed the title Initial draft for revising getting started v2 Getting Started (AWS) May 28, 2026
The reference to the k8 tutorial has been moved into a standard Note component. This file is now dead code.
Removed redundant "Next Steps" clutter and relocated Docker, Compose, and Helm to a dedicated orchestration section. Standardized tone and corrected tool categorizations.
Consolidated use cases, removed duplicated MCP configuration, and deleted non-functional validation content. Standardized the tone and improved technical context throughout the guide.
quetzalliwrites and others added 6 commits May 29, 2026 00:43
Eliminated redundant introduction slop and consolidated configuration methods by execution type. Simplified token comparisons, optimized verification snippets, and unified security warnings for better technical clarity.
Copy link
Copy Markdown
Member

@HarshCasper HarshCasper left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First Round of Review

Start LocalStack with `SMTP_HOST=host.docker.internal:1025`, pointing to the mock SMTP server.
<Tabs>
<TabItem label="lstk">```bash lstk stop ```</TabItem>
<TabItem label="LocalStack CLI">```bash localstack stop ```</TabItem>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think putting it in a new line should fix the issue.

Comment on lines +107 to +123
```bash
mkdir -p /tmp/localstack-demo
cat > /tmp/localstack-demo/handler.py << 'EOF'
import json, boto3, os, uuid

def handler(event, context):
table = boto3.resource('dynamodb').Table(os.environ['TABLE_NAME'])
method = event.get('requestContext', {}).get('http', {}).get('method', 'GET')
if method == 'POST':
item = {'id': str(uuid.uuid4()), **json.loads(event.get('body', '{}'))}
table.put_item(Item=item)
return {'statusCode': 200, 'body': json.dumps(item)}
result = table.scan()
return {'statusCode': 200, 'body': json.dumps(result['Items'])}
EOF
cd /tmp/localstack-demo && zip handler.zip handler.py
```
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Python handler heredoc will fail. Because it's << 'EOF' (quoted, not <<-) and the whole block is nested inside <Steps> → ordered list → <TabItem><Tabs>, the leading indentation is captured into handler.py. The first line import ... ends up indented, which Python rejects and will always lead to an error when a user copy pastes the command into the terminal.


### Helm
```bash
helm repo add localstack-repo [https://helm.localstack.cloud](https://helm.localstack.cloud)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no way this command runs 😅 Markdown link syntax isn't processed inside a fenced code block, so this command is literally uncopyable.

{/* prettier-ignore-start */}

<Tabs>
<TabItem label="lstk">```bash lstk stop ```</TabItem>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is still wrong. A single-line bash lstk stop makes bash lstk stop the info-string, not a code block with lstk stop as content.


- name: Run tests
run: |
# Your test commands here, e.g.:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might cause the CI to basically fail. The # comment is indented to the same level as the run: key, while the commands below it are indented further.


The Auth Token is required to activate the LocalStack for AWS core cloud emulator. It identifies and authenticates users outside the LocalStack Web Application.
It primarily accesses your workspace and advanced services & features.
## Token Types
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not exactly a comment per se on this, but just noticing that most of these new docs are using title case when most of the docs we have now uses sentence case.

@@ -0,0 +1,153 @@
---
title: CI/CD Integration
description: implementation guides for LocalStack in automated pipelines, including GitHub Actions, Docker Compose, and state management.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not start with lowercase over here:

Suggested change
description: implementation guides for LocalStack in automated pipelines, including GitHub Actions, Docker Compose, and state management.
description: Implementation guides for LocalStack in automated pipelines, including GitHub Actions, Docker Compose, and state management.


```bash
rm -rf /tmp/localstack-demo

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Empty lines here. Can we double check if there are no empty lines anywhere else in the command block since they serve no purpose?


To verify that the LocalStack CLI was installed correctly, you can check the version in your terminal:

<Code code={`localstack --version\n${LOCALSTACK_VERSION}`} lang="bash" />
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This renders the literal string ${LOCALSTACK_VERSION} rather than a version so it needs to be fixed before merge.

image: localstack/localstack-pro
ports:
- "127.0.0.1:4566:4566"
- "127.0.0.1:4510-4559:4510-4559"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why have we removed the :443 HTTPS gateway port reference? This is fine for a simple example, but this is going to break many customer samples that depend on port 443 being exposed. FWIW, even lstk itself binds :443 by default 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants