# Atlantide > Atlantide is a typed, deterministic Infrastructure-as-Code engine for Python. Configs are ordinary Python files (`infra.py`) executed by Atlas-lang, a bounded interpreter with no clock, randomness, environment, network or filesystem, so the same config always produces the same plan. Resources form a Merkle-hashed dependency graph; apply skips any node whose hash is unchanged without calling the provider. Notes for agents: - Each page below is plain Markdown. Append `.md` to any page's path, or use the links here. `llms-full.txt` is every page in one file. - Before writing a config, read the agent guide (`agents/SKILL.md`): it lists the Atlas-lang restrictions and the validate/plan loop to follow. - Discover types from the installed CLI rather than from memory: `atlantide resources` and `atlantide schema `. - `atlantide validate` and `atlantide plan` need no credentials and change nothing. `apply`, `destroy`, `deploy` and `state` subcommands change real infrastructure or its record; do not run them without the user's approval. ## Agent guide - [SKILL.md](https://atlantide-org.github.io/agents/SKILL.md): rules, idioms and the validate/plan loop for writing Atlantide configs. Also served without frontmatter as [AGENTS.md](https://atlantide-org.github.io/agents/AGENTS.md). ## Home - [Home](https://atlantide-org.github.io/index.md): Typed, deterministic Infrastructure-as-Code for Python: quickstart, a multi-environment config, and the engine's core design. ## Get started - [Installation](https://atlantide-org.github.io/install.md): Install the standalone binary or the PyPI package, scaffold a project with atlantide init, and upgrade or remove Atlantide. ## Guide - [CLI](https://atlantide-org.github.io/reference/cli.md): Every command: init, import, refresh, targeting with -t and --env, interrupts, diagnostics, exit codes, secrets, components and state. - [Configuration](https://atlantide-org.github.io/reference/configuration.md): Environments (Config and EnvSchema), per-run inputs, the atlantide.toml project file, and profiles. - [Authoring](https://atlantide-org.github.io/reference/authoring.md): Writing a config: resources, stacks, outputs, lifecycle, depends_on, output combinators, derived values, inputs, secrets, and what Atlas-lang rejects. - [Policies](https://atlantide-org.github.io/reference/policies.md): Plan-time policies with enforce(): levels, narrowing by type, the built-in rules, and binding a policy to a resource type. - [Remote state](https://atlantide-org.github.io/reference/remote-state.md): S3+DynamoDB and Postgres state backends, lease-based locking and concurrency, state management commands, and remote secrets. - [Providers](https://atlantide-org.github.io/reference/providers.md): The local, random and aws providers, their resource types and defaults, data sources, and writing a provider plugin. - [Components](https://atlantide-org.github.io/reference/components.md): Components: grouping resources behind one object, publishing and consuming them with pinned commits, and worked examples. - [CI and automation](https://atlantide-org.github.io/reference/ci.md): Running atlantide unattended: pre-commit validation, plan as a pull-request gate, apply on merge, build-once promotion, JSON output and exit codes. - [Troubleshooting](https://atlantide-org.github.io/reference/troubleshooting.md): Every Atlantide error by pipeline stage: what raised it, what it means, and how to fix it. ## How it works - [How it works](https://atlantide-org.github.io/how-it-works/index.md): The engine's mental model, the eight-stage pipeline on one page, and which command runs which stages. ## Building on AWS - [Building on AWS](https://atlantide-org.github.io/aws/index.md): A multi-environment AWS stack built one resource at a time: VPC, S3, SQS, IAM, Lambda, secrets and policies. ## For agents - [For agents](https://atlantide-org.github.io/agents.md): Machine-readable docs (llms.txt, per-page Markdown) and a drop-in skill that teaches coding agents to write and plan Atlantide configs safely. ## Optional - [Coming from Terraform](https://atlantide-org.github.io/comparison.md): Terraform, Pulumi and CDK vocabulary mapped to Atlantide, key differences, current limitations, and migration. - [Walkthrough](https://atlantide-org.github.io/how-it-works/walkthrough.md): The pipeline run end to end against local files, no credentials needed: IR, hashes, diff, apply, skip, drift. - [The Merkle hash](https://atlantide-org.github.io/how-it-works/merkle.md): The two-phase Merkle hash in detail: what goes into input_hash, symbolic refs, and why unchanged subgraphs cost no provider calls. - [When apply fails](https://atlantide-org.github.io/how-it-works/failure.md): What happens when apply fails: phases, compensation in reverse order, what cannot be rolled back, and poisoned rows. - [Glossary](https://atlantide-org.github.io/glossary.md): Every Atlantide term — Atlas-lang, Ref, input_hash, changeset, lease, compensation — defined in pipeline order. ## Everything - [llms-full.txt](https://atlantide-org.github.io/llms-full.txt): all of the above in one file.