Skip to main content
DEM logo

Development Environment Manager
for
Embedded Development

Manage your isolated Development Environments with ease


GitHub tag (with filter) GitHub issues Discord


:star2: Join our Community on Discord :star2:


Overview

DocumentationTutorialContribution GuideSupport

DEM is a command-line tool that provides an easy, reproducible, and scalable way to set up multi-container-based Development Environments (DevEnvs for short) for software development.

DEM is currently in alpha state, so expect major changes in the future!

Contributors and early adopters are welcome!

Key features

  • Create scalable, reliable, and reproducible containerized Development Environments where each tool is isolated in its own container.
  • Install preconfigured Development Environments from catalogs.
  • Ensure that everyone on your team works with the same toolset.

How is DEM Different?

Unlike other container-based development environments that pack all tools into a single image requiring users to enter the container via an interactive shell, DEM creates a separate container for each tool. This allows you to work on your host system with your usual setup while the development-specific tools are isolated in containers.

Prerequisites

Linux and Windows are supported.

ℹ️ macOS is not yet officially supported. However, if all prerequisites are met, DEM should work on macOS as well.

DEM depends on Python and Docker. Ensure you have the following versions:

  • Python 3.10+
  • Docker Engine 24.0+

Installation

First, install Python and Docker if you haven't already:

Make sure to include pip during Python installation.

Install DEM from the PyPI repository using:

pip install axem-dem
  • The package name is 'axem-dem', but the command is dem.
  • Ensure the Docker daemon is running before using DEM.

Enable Autocompletion

Enable autocompletion for PowerShell, Bash, and Zsh shells:

dem --install-completion

If the command doesn't work, specify your shell type as an input parameter (powershell, bash, or zsh).

Note for Zsh users: compinit must be called from your .zshrc.

Quick start

We got you covered in all scenarios!

I'd like to start with a template...

DEM comes with a few templates available from the axem catalog. List them with:

dem list --cat axem

Clone the selected template:

dem clone DEV_ENV_NAME

Replace DEV_ENV_NAME with the name of the Development Environment you want to clone.

I'd like to work on a project already configured with DEM...

Enter the project's root directory and initialize the DevEnv:

dem init

I'd like to use a DevEnv someone shared with me...

Import a DevEnv descriptor JSON:

dem import PATH_TO_DEV_ENV

where PATH_TO_DEV_ENV is the path to the JSON file.

I'd like to create my own DevEnv from scratch...

Create a new DevEnv:

dem create DEV_ENV_NAME

Customize your DevEnv:

  • Add or remove tools.
  • Change the tool image for a given tool.

You can edit the DevEnv with:

dem modify DEV_ENV_NAME

Finally, if you are ready to use the Development Environment, install it with:

dem install DEV_ENV_NAME

For more detailed instructions please refer to the Documentation

The Concept in a Nutshell

A Development Environment (DevEnv) is a set of software tools used for a specific development project (e.g., build system, debugger, test framework).

The idea is to pack the tools separately into container images, which are then can be stored in registries.

Each DevEnv has a descriptor, like a blueprint, indicating which tools are required.

DevEnv descriptor

Sample descriptors can be stored in the Development Environment Catalogs. You can browse these catalogs and download a copy of the Development Environment descriptor to your local catalog.

Catalogs

A DevEnv can be installed from your local catalog.

DevEnv installation

Release files for axem-dem 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for axem-dem 0.8.0
File Size Uploaded
axem_dem-0.8.0.tar.gz 39.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for axem-dem 0.8.0
File Interpreter ABI Platform
axem_dem-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size:96.7 kB

Release files / axem_dem-0.8.0.tar.gz

Download URL axem_dem-0.8.0.tar.gz
Size 39.6 kB
Tags Source
SHA-256 checksum
How to use checksums
367d82c4dbe8ccace4e9fb45191f48da49ff95b3026f53f5293b53fa07dad0fd
BLAKE2b-256 checksum
How to use checksums
e607a221cb7c5921fd22c32163f36b29ff548e63e6d37e5f2f16dd4312f373a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.10.12 Linux/6.5.0-1025-azure

Release files / axem_dem-0.8.0-py3-none-any.whl

Download URL axem_dem-0.8.0-py3-none-any.whl
Size 57.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6d2abc5042f48b859511538a795a693bb44e04add808bb1e5dbaebf8ea8abc37
BLAKE2b-256 checksum
How to use checksums
9c43ca143b06f3c60f1a51e8aa7f00f7d32d889cccf6cc710eae2853c4ebe801
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.10.12 Linux/6.5.0-1025-azure

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page