Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Template Catalog

MADSci includes 33 built-in templates for scaffolding lab components. Browse templates with:

madsci new list                       # Show all templates
madsci new list --category module     # Filter by category
madsci new list --tag device          # Filter by tag

Bundled Agent Skills

All templates automatically include relevant agent skills in the generated project’s .agents/skills/ directory. These skills provide AI coding agents (Claude Code, etc.) with domain-specific knowledge about MADSci patterns and conventions. See Agent Skills Reference for details.

CategoryBundled Skills
Module, Node, Interface, Commmadsci-nodes
Experimentmadsci-experiments
Workflowmadsci-nodes, madsci-managers, madsci-cli
Labmadsci-nodes, madsci-experiments, madsci-managers, madsci-cli

Module Templates (6)

Templates for creating complete node module packages with server, interface(s), types, tests, and documentation.

module/basic

Minimal module with a single example action.

madsci new module --template module/basic --name my_module
ParameterTypeDefaultDescription
module_namestringmy_moduleModule name (lowercase, underscores)
module_descriptionstringA MADSci node moduleModule description
author_namestringAuthor name
portinteger2000Default port (1024-65535)
include_testsbooleantrueInclude test scaffolding
include_dockerfilebooleantrueInclude Dockerfile

module/device

Standard device module with lifecycle actions (initialize, shutdown, status) and resource management.

madsci new module --template module/device --name my_device

Parameters: Same as module/basic (default name: my_device).

module/instrument

Measurement instrument module with calibration and data acquisition actions.

madsci new module --template module/instrument --name my_instrument

Parameters: Same as module/basic (default name: my_instrument).

module/liquid_handler

Liquid handling module with aspirate, dispense, and transfer actions.

Includes location representation template boilerplate with JSON Schema definitions for deck slot positions and plate type configuration. See the Location Templates Guide for details on customizing these templates.

madsci new module --template module/liquid_handler --name my_liquid_handler

Parameters: Same as module/basic (default name: my_liquid_handler).

module/camera

Camera/vision system module with image capture and configuration actions.

madsci new module --template module/camera --name my_camera

Parameters: Same as module/basic (default name: my_camera).

module/robot_arm

Robot arm module with pick, place, move, and home actions for material handling.

Includes location representation template boilerplate with JSON Schema definitions for deck access positions, gripper configuration, and payload limits. See the Location Templates Guide for details on customizing these templates.

madsci new module --template module/robot_arm --name my_robot_arm

Parameters: Same as module/basic (default name: my_robot_arm).


Interface Templates (4)

Templates for adding interface variants to existing modules.

interface/fake

In-memory simulation interface for testing without hardware.

madsci new interface --type fake
ParameterTypeDefaultDescription
module_namestringmy_moduleModule name
simulated_latencyfloat0.1Simulated operation latency in seconds (0.0-60.0)

interface/real

Real hardware interface stub with connection lifecycle and error handling patterns.

madsci new interface --type real
# or: madsci new module  (included by default in module templates)
ParameterTypeDefaultDescription
module_namestringmy_moduleModule name
connection_typestringtcpConnection type

interface/sim

Interface for connecting to an external device simulator (e.g., Omniverse).

madsci new interface --type sim
ParameterTypeDefaultDescription
module_namestringmy_moduleModule name
simulator_urlstringhttp://localhost:9000Simulator URL

interface/mock

Pytest mock-based interface for unit testing.

madsci new interface --type mock
ParameterTypeDefaultDescription
module_namestringmy_moduleModule name

Node Templates (1)

node/basic

Standalone REST node server for an existing interface.

madsci new node --name my_device --interface-module my_device.interface
ParameterTypeDefaultDescription
node_namestringmy_nodeNode name
node_descriptionstringA MADSci REST nodeNode description
portinteger2000Default port (1024-65535)

Experiment Templates (4)

Templates for different experiment execution modalities.

experiment/script

Simple run-once experiment script using ExperimentScript modality.

madsci new experiment --modality script --name my_study
ParameterTypeDefaultDescription
experiment_namestringmy_experimentExperiment name
experiment_descriptionstringA MADSci experimentDescription
author_namestringAuthor name

experiment/notebook

Interactive Jupyter notebook experiment using ExperimentNotebook modality.

madsci new experiment --modality notebook --name my_analysis
ParameterTypeDefaultDescription
experiment_namestringmy_experimentExperiment name
experiment_descriptionstringA MADSci notebook experimentDescription
author_namestringAuthor name
lab_server_urlstringhttp://localhost:8000/Lab server URL

experiment/tui

Interactive terminal UI experiment using ExperimentTUI modality.

madsci new experiment --modality tui --name my_interactive
ParameterTypeDefaultDescription
experiment_namestringmy_experimentExperiment name
experiment_descriptionstringA MADSci experimentDescription
author_namestringAuthor name

experiment/node

REST API server experiment using ExperimentNode modality.

madsci new experiment --modality node --name my_service
ParameterTypeDefaultDescription
experiment_namestringmy_experimentExperiment name
experiment_descriptionstringA MADSci server experimentDescription
author_namestringAuthor name
server_portinteger6000Server port (1024-65535)

Workflow Templates (2)

workflow/basic

Simple single-step workflow.

madsci new workflow --name sample_transfer
ParameterTypeDefaultDescription
workflow_namestringmy_workflowWorkflow name
workflow_descriptionstringA MADSci workflowDescription
node_namestringexample_nodeTarget node name
action_namestringexample_actionAction to execute

workflow/multi_step

Multi-step workflow with sequential node actions.

madsci new workflow --template workflow/multi_step --name process_pipeline
ParameterTypeDefaultDescription
workflow_namestringmy_workflowWorkflow name
workflow_descriptionstringA multi-step MADSci workflowDescription
node_1_namestringnode_1First node name
node_1_actionstringaction_1First action
node_2_namestringnode_2Second node name
node_2_actionstringaction_2Second action

Lab Templates (3)

lab/minimal

Minimal lab configuration with no Docker required.

madsci new lab --template minimal --name my_research_lab
ParameterTypeDefaultDescription
lab_namestringmy_labLab name
lab_descriptionstringA MADSci self-driving laboratoryDescription

lab/standard

Standard lab with all managers and Docker Compose infrastructure.

madsci new lab --template standard --name my_lab

Parameters: Same as lab/minimal.

lab/distributed

Distributed lab configuration for multi-host deployments.

madsci new lab --template distributed --name production_lab
ParameterTypeDefaultDescription
lab_namestringmy_labLab name
lab_descriptionstringA distributed MADSci self-driving laboratoryDescription

Communication Templates (5)

Templates for instrument communication interfaces, used within node modules.

comm/serial

Serial port communication using pySerial patterns.

ParameterTypeDefaultDescription
interface_namestringmy_serialInterface name
interface_descriptionstringA serial port communication interfaceDescription

comm/socket

TCP/UDP socket communication interface.

ParameterTypeDefaultDescription
interface_namestringmy_socketInterface name
interface_descriptionstringA socket communication interfaceDescription

comm/rest

REST API client for HTTP-based instrument communication.

ParameterTypeDefaultDescription
interface_namestringmy_rest_clientInterface name
interface_descriptionstringA REST API client interfaceDescription

comm/sdk

Vendor SDK wrapper for instrument communication.

ParameterTypeDefaultDescription
interface_namestringmy_sdkInterface name
interface_descriptionstringA vendor SDK wrapper interfaceDescription

comm/modbus

Modbus TCP/RTU communication using pymodbus patterns.

ParameterTypeDefaultDescription
interface_namestringmy_modbusInterface name
interface_descriptionstringA Modbus communication interfaceDescription

Addon Templates (8)

Templates for adding optional components to existing module projects via madsci add.

addon/docs

Add documentation directories (docs/, guides/, API reference stubs).

madsci add docs

addon/drivers

Add instrument driver directories with connection boilerplate.

madsci add drivers

addon/notebooks

Add testing notebooks (Jupyter notebooks for interactive testing).

madsci add notebooks

addon/gitignore

Add a Python .gitignore file.

madsci add gitignore

addon/compose

Add a Docker Compose file for containerized deployment.

madsci add compose

addon/dev_tools

Add developer tooling configuration (ruff, pytest, pre-commit).

madsci add dev_tools

addon/agent_config

Add agentic coding configuration (CLAUDE.md, AGENTS.md).

madsci add agent_config

addon/all

Add all available addon components at once.

madsci add all

Summary

CategoryCountTemplates
Module6basic, device, instrument, liquid_handler, camera, robot_arm
Interface4fake, real, sim, mock
Node1basic
Experiment4script, notebook, tui, node
Workflow2basic, multi_step
Lab3minimal, standard, distributed
Communication5serial, socket, rest, sdk, modbus
Addon8docs, drivers, notebooks, gitignore, compose, dev_tools, agent_config, all
Total33