Geodesic: A Production-Ready DevOps Toolbox for Development Containers
While Atmos supports any devcontainer configuration, Geodesic is a proven DevOps toolbox that's been battle-tested for almost 10 years. If you're looking for a production-ready development container with all the tools you need for infrastructure work, Geodesic is your answer.
What is Geodesic?
Geodesic is Cloud Posse's implementation of the DevOps toolbox pattern—a comprehensive development container that includes everything you need for modern infrastructure work.
Geodesic is a devcontainer implementation. It predates the Development Containers specification, but it's the exact same concept: a containerized environment with all your tools pre-installed and pre-configured.
The DevOps Toolbox Pattern
The concept of containerized development environments—what we call "DevOps toolboxes"—originated in the DevOps world long before the Development Containers spec existed. Companies like CoreOS pioneered the toolbox pattern, recognizing that DevOps teams needed consistent, reproducible environments without installing dozens of tools locally.
The idea is simple but powerful: package all your tools into a container, and developers just need Docker and a shell.
Geodesic has been implementing this pattern since 2016, providing infrastructure teams with a battle-tested solution for the "works on my machine" problem.
What's Included?
Geodesic comes pre-loaded with everything you need for infrastructure work:
Core Infrastructure Tools
- Atmos (of course!)
- Terraform with all major providers
- kubectl and Kubernetes tools (helm, helmfile, k9s, etc.)
- Cloud CLIs: AWS CLI, Azure CLI, Google Cloud SDK
- Data processing: jq, yq, gomplate
- Development essentials: git, make, vim, and more
- Custom scripts and tooling
Production-Tested Foundation
Geodesic images are:
- Multi-platform: linux/amd64 and linux/arm64
- Debian-based: Familiar package management
- Customizable: Use as a base image for your own toolbox
- Production-tested: Nearly a decade of real-world usage
- Open source: Over 1,000 stars on GitHub
Using Geodesic with Atmos
With Atmos's native devcontainer support, using Geodesic is incredibly simple:
# atmos.yaml
devcontainer:
geodesic:
spec:
name: "Geodesic DevOps Toolbox"
image: "cloudposse/geodesic:latest"
workspaceFolder: "/workspace"
workspaceMount: "type=bind,source=${localWorkspaceFolder},target=/workspace"
containerEnv:
ATMOS_BASE_PATH: "/workspace"
remoteUser: "root"
Then launch it:
atmos devcontainer shell geodesic
# You're in a fully-equipped DevOps environment
Getting Started in 2 Minutes
Here's how fast you can go from zero to productive:
# 1. Install Atmos (one binary)
brew install atmos
# 2. Navigate to your infrastructure repo
cd my-infrastructure
# 3. Launch Geodesic
atmos devcontainer shell geodesic
# You're in. Start working.
$ atmos terraform plan vpc -s prod
$ kubectl get pods
$ helm list
That's the ingenious part: All you need to install is Atmos. Everything else—Terraform, cloud CLIs, Kubernetes tools—gets pulled from the container image automatically.
Your host machine stays clean. Your environment stays consistent. Your team uses identical tool versions.
Quick Start with Examples
Check out the live examples in the Atmos repository:
# Clone Atmos repo (or just browse examples on GitHub)
git clone https://github.com/cloudposse/atmos.git
cd atmos/examples/devcontainer
# The example includes a complete configuration
cat atmos.yaml
# Shows geodesic devcontainer configuration
# Launch it
atmos devcontainer shell geodesic
The examples/devcontainer folder contains:
- Complete
atmos.yamlwith Geodesic configuration - Example
devcontainer.jsonfile - Shell aliases for convenience
- Ready-to-use setup
Use this as a starting point for your own configuration. Copy it, customize it, make it yours.
Shell Aliases for One-Word Access
Make it even easier with shell aliases in your atmos.yaml:
# atmos.yaml
aliases:
shell: "devcontainer shell geodesic"
Now you can just type:
atmos shell
# Immediately launches Geodesic
This mirrors the classic Geodesic pattern where you'd type ./geodesic.sh to launch your environment. Now it's even simpler: atmos shell.
Customizing Geodesic
Use as a Base Image
Create your own custom toolbox based on Geodesic. First, create a Dockerfile:
# .devcontainer/Dockerfile
FROM cloudposse/geodesic:latest
# Add your organization's tools
RUN apt-get update && apt-get install -y \
your-custom-tool \
another-tool
# Add custom scripts
COPY scripts/ /usr/local/bin/
# Configure environment
ENV CUSTOM_VAR=value
Then configure Atmos to build from your Dockerfile:
# atmos.yaml
devcontainer:
geodesic:
spec:
name: "Custom Geodesic Toolbox"
build:
dockerfile: ".devcontainer/Dockerfile"
context: "."
args:
GEODESIC_VERSION: "latest"
workspaceFolder: "/workspace"
workspaceMount: "type=bind,source=${localWorkspaceFolder},target=/workspace"
containerEnv:
ATMOS_BASE_PATH: "/workspace"
remoteUser: "root"
Launch it just like any other devcontainer:
# Build and launch
atmos devcontainer shell geodesic
# Force rebuild after changing Dockerfile
atmos devcontainer shell geodesic --replace
Atmos will automatically build the image from your Dockerfile, tag it as atmos-devcontainer-geodesic, and create the container.
Check out the complete example in examples/devcontainer-build which includes a working Dockerfile, devcontainer.json, and atmos.yaml for building custom Geodesic containers.
Version Pinning for Consistency
Pin specific Geodesic versions per project:
# project-a/atmos.yaml
devcontainer:
toolbox:
spec:
image: "cloudposse/geodesic:4.3.0" # Pinned version
# project-b/atmos.yaml
devcontainer:
toolbox:
spec:
image: "cloudposse/geodesic:4.4.0" # Different version
Each project gets the right tool versions automatically.
