The Experimental Physics and Industrial Control System (EPICS) is a set of software tools and applications used to develop and implement distributed control systems to operate devices such as particle accelerators, telescopes and other large experiments.
- EPICS Tech Talk Mailing List - The main forum for talking about EPICS and the other parts of the ecosystem.
- EPICS Controls - The newer home for EPICS.
- EPICS Argonne Home - The older website hosted at Argonne National Laboratory.
- EPICS Documentation - The official EPICS documentation site, covering Base, modules, and the wider ecosystem.
- EPICS GitHub Organization - The epics-base GitHub organization hosting EPICS Base and core repositories.
- EPICS Base - EPICS is a set of Open Source software tools, libraries and applications developed collaboratively and used worldwide to create distributed soft real-time control systems for scientific instruments such as a particle accelerators, telescopes and other large scientific experiments.
- EPICS Docs - Documentation for EPICS Base.
- VSCode EPICS - VS Code colorization for EPICS database, templates and substitution files.
- epics.nvim - EPICS-related tools for Neovim including syntax highlighting and utilities.
- tree-sitter-epics - Parsers for EPICS DSL file types: .db, .template, .substitutions, .proto, and .st SNL files.
- EPICS IDE (Eclipse) - Eclipse plug-in for EPICS development with project wizards and IOC management.
pvAccess is a high-performance network communication protocol for signal monitoring and scientific data services interconnect.
- pvAccess Specification - The official specification of the pvAccess network protocol.
- pvxs C++ Implementation - Modern C++11 library implementing pvAccess and Channel Access, with Python bindings (p4p).
- Original C++ Implementation - The original C++ pvAccess library. Archived.
- p4p - Python bindings for pvAccess with client, server, and gateway (pvAgw) APIs.
- pvaPy - Python API for pvAccess with support for PvObject serialization and RPC services.
- Phoebus Java Implementation - The Java pvAccess implementation maintained within the Phoebus core.
- Original Java Implementation - The original Java pvAccess library in epicsCoreJava. Archived.
- pva2pva - PVAccess gateway/proxy for bridging pvAccess networks; superseded by p4p.gw. Archived.
- spvirit - Complete pvAccess protocol suite in Rust (codec, client, server, NT types, Python bindings) (ISIS).
- pvxs-sys - Low-level Rust FFI bindings for the pvxs C++ pvAccess library.
- Channel Access Specification - The official specification of the Channel Access network protocol.
- Java Implementation - Java Channel Access (JCA) client and server library.
- Jackie - Jackie Java Channel Access client library.
- pyepics - Python interface to the EPICS Channel Access (CA) library for the EPICS control system.
- caproto - Pure-Python Channel Access implementation (client and server) with a pluggable I/O model.
- pcaspy - Portable Channel Access Server in Python for embedding CA servers in Python applications (PSI).
- cothread - Python library for asynchronous Channel Access using cooperative threading (Diamond Light Source).
- aioca - Asynchronous Channel Access client for Python asyncio (Diamond Light Source).
- ophyd - Hardware abstraction layer for EPICS and other control systems, part of the Bluesky ecosystem.
- NetChannelAccess - Pure C#/.NET implementation of the Channel Access protocol (client and server) (PSI).
- epicars - Standalone pure-Rust Channel Access protocol client.
- epics-ca - Rust client library for Channel Access.
- ca-nameserver - Channel Access PV name server: lets clients discover PVs without flooding every subnet.
- cacm - Channel Access Client Monitor: command-line CA monitoring tool.
- caTools - PSI's enhanced Channel Access command-line tools (caget, caput, camonitor, cawait, and more) (PSI).
Channel Access client interfaces for languages and environments beyond Python.
- matlab_ca - MATLAB Channel Access client providing MCAGET/MCAPUT/MCAMON functions.
- labCA - EPICS Channel Access interface for MATLAB and Scilab.
- CALab - Channel Access client plugin for LabVIEW.
- asyn - EPICS module for driver and device support.
- StreamDevice - EPICS Driver for message based I/O (PSI).
- devlib2 - Portable helper library for PCIbus, MMIO, and VME64 CR/CSR hardware access; used by many hardware support modules.
- regdev - Generic EPICS register-device support framework for memory-mapped and register-based hardware (PSI).
- mmap - regDev driver for VME and file-based memory maps (PSI).
- epics-open62541 - EPICS device support acting as an OPC UA client via the open62541 library (KIT).
- asynPythonDriver - Write an asynPortDriver entirely in Python (PSI).
- pscdrv - Portable Streaming Controller driver: EPICS device support for streaming socket-based hardware controllers.
- linStat - EPICS driver serving Linux system- and process-level statistics as PVs.
- i2cDev - EPICS support and a simple API for I2C devices on Linux (PSI).
- motor - EPICS motor record and device support for a wide range of motion controllers.
- ecmc - EPICS support for EtherCAT motion and generic I/O controllers.
- ecmccfg - Configuration and deployment scripts for the EtherCAT Motion Controller (ecmc) (PSI).
- ecat2 - PSI EtherCAT driver for EPICS (PSI).
- modbus - EPICS support for Modbus TCP/IP and serial communication with PLCs and other devices.
- s7plc - EPICS driver for communication with Siemens S7 PLCs (PSI).
- ether_ip - EPICS device support for Allen-Bradley PLCs via the EtherIP protocol.
- directNetAsyn - EPICS device support for Automation Direct (Koyo) PLCs over an Asyn serial connection.
- twincat-ads - EPICS device support for communicating with Beckhoff TwinCAT PLCs via the ADS protocol.
- opcua - EPICS device support for OPC UA servers.
- epics-SMC9300 - EPICS device support for the Huber SMC 9300 motor controller (KIT).
- epics-DeltaPS - EPICS device support for Delta SM3300 series power supplies (KIT).
- isara-arm - EPICS driver for the ISARA sample-mounting robot.
- areaDetector - Framework and core library for detector and camera integration.
- ndwarp - NDPluginWarp: areaDetector plugin for image spatial-distortion correction / warping.
- slsDetector - areaDetector driver for SLS Detector Group detectors (Eiger, Jungfrau, Mythen) (PSI).
- ADZMQ - ZMQ ADDriver and NDPlugin for streaming areaDetector image data over ZeroMQ (PSI).
- cam_server - Camera server that converts EPICS-enabled cameras into bsread image streams (PSI).
- mca - EPICS support for multi-channel analyzers (MCA) and multi-channel scalers (MCS).
- sscan - Programmatically configures conditions and acquires data across positioner ranges; standard at experimental beamlines.
- calc - synApps module providing sCalcout, swait, transform, and other calculation record types.
- mrfioc2 - EPICS driver for Micro Research Finland event-based timing system devices.
- epics-picoharp - EPICS driver for PicoQuant PicoHarp 300 time-correlated photon counter (KIT).
- sequencer - State Notation Language (SNL) compiler and runtime sequencer for writing state machine programs in EPICS IOCs.
- autosave - Saves and restores IOC PV values across restarts.
- caPutLog - Logs Channel Access put operations to iocLogServer for audit trails.
- iocStats - IOC statistics and health monitoring records.
- mqtt - Native EPICS support for the MQTT protocol, enabling integration with IoT brokers.
- epics-execute - EPICS device support for executing arbitrary shell scripts from an IOC (KIT).
- IocshDeclWrap - C++ templates for easily wrapping user functions as EPICS IOC-shell commands (PSI).
- iocsh_utilities - Assorted EPICS IOC-shell utility commands (PSI).
- PyDevice - Device support for writing IOC functionality directly in Python.
- pyDevSup - Device support layer for implementing EPICS record processing in Python.
- lua - Shell and scripting interfaces for EPICS IOCs using the Lua language.
- e3 - Allows for easily building EPICS modules directly from source and automagically resolves module dependencies, and allows for site-specific modifications to EPICS modules without needing to directly modify source trees (ESS).
- EPNix - Build, package, and deploy IOCs and other EPICS-related software using the Nix package manager.
- EPICS Containers - A collection of tools and documentation for building, deploying and managing containerized EPICS IOCs in a Kubernetes cluster.
- EPICS on conda-forge - conda-forge feedstock for the
epics-basepackage; installs EPICS Base and tools (medm, striptool, probe, alh, extensions) via conda. - require - Runtime loader for EPICS IOCs that dynamically loads versioned support modules; the core of PSI's
driver.makefilebuild system (PSI). - makeUtils - Extensions for PSI's
driver.makefile, used together with require (PSI). - EPICS-env - Reproducible EPICS Base + modules build/configuration environment.
- EPICS-env-distribution - Pre-built binary distribution of the EPICS-env environment.
- ibek - IOC Builder for EPICS and Kubernetes: generates IOC startup scripts from YAML.
- EPICS-IOC-template-tools - ALS-U EPICS IOC template generator (ALS-U).
- procServ - Process server: wraps an IOC (or any child process) with a telnet console and automatic restart.
- pythonSoftIOC - Embed a fully functional EPICS IOC in a Python process (Diamond Light Source).
- systemd-softioc - Systemd service scripts for managing EPICS soft IOCs via procServ.
- iocmanager - PyQt5 GUI for configuring and monitoring EPICS IOC processes across a facility (SLAC/PCDS).
- epics-ioc-runner - CLI tool for managing (start/stop/status) EPICS IOC processes.
- epics_NIOCs - Setup tool for running multiple IOCs on a single Linux host.
- Phoebus - A framework and set of tools to monitor and operate large scale control systems, such as the ones in the accelerator community.
- caQtDM - Qt-based display manager with MEDM migration tools; runs on Linux, Windows, macOS, iOS, and Android.
- PyDM - Python Display Manager: widget toolkit for building control system operator interfaces (SLAC).
- React-Automation-Studio - Web-based EPICS operator interface platform built with React and Node.js.
- weiss - Web EPICS Interface & Synoptic Studio: drag-and-drop tool for building EPICS web operator interfaces.
- DBWR - Display Builder Web Runtime: renders Phoebus .bob OPI files in any browser with no client installation (ORNL).
- medm - Motif Editor and Display Manager: a legacy X11/Motif display tool, still in use at many sites.
- EDM - Extensible Display Manager: X11/Motif-based interactive GUI builder for EPICS operator interfaces, widely used at facilities (SLAC).
- StripTool - Legacy strip-chart plotting tool for Channel Access PVs.
- jstriptool - Java reimplementation of StripTool for strip-chart plotting of Channel Access PVs (PSI).
- PShell - Java/Python scientific scripting workbench and GUI for controlling EPICS-based experiments (PSI).
- CS Studio - Eclipse-based predecessor to Phoebus for monitoring and operating large scale control systems. Superseded by Phoebus. Archived.
- ca-gateway - Channel Access PV Gateway: bridges multiple CA subnets and enforces access security.
- pvws - PV Web Socket: serves Channel Access and pvAccess PVs over WebSockets to browser clients.
- pvws-springboot - Spring Boot reimplementation of the pvws PV WebSocket server.
- epics2web - Web gateway that exposes EPICS CA PVs via a JSON WebSocket API.
- wica-http - HTTP streaming service providing real-time browser access to live EPICS control-system data (PSI).
- Archiver - This is an implementation of an archiver for EPICS control systems that aims to archive millions of PVs.
- Phoebus Archive Engine - EPICS archive engine in Phoebus: stores PV history to RDB (MySQL, PostgreSQL, TimescaleDB).
- epics-archiver (Rust) - Rust port of the EPICS Archiver Appliance with CA/pvAccess ingestion and PlainPB storage.
- ChannelArchiver - Legacy EPICS Channel Archiver predating Archiver Appliance; minimal maintenance. Archived.
- archiverappliance-datasource - Grafana datasource plugin for querying EPICS Archiver Appliance data.
- epicsarchiver-retrieval-client - Official Python library and CLI for retrieving data from the EPICS Archiver Appliance.
- epicsarchiverap_pbrawclient - Official Java client for the Archiver Appliance binary (PB raw) retrieval protocol.
- epicsarchiver-mgmt-client - Official Python library and CLI for the Archiver Appliance management (mgmt) interface.
- archapp - Python client for Archiver Appliance with Pandas/xarray support (SLAC/PCDS).
- aaclient - Python client for the EPICS Archiver Appliance.
- eapy - Python interface to the ChannelArchiver V4 data access layer.
- epicsarchiverap-env - Configuration/build environment for deploying the EPICS Archiver Appliance.
- Channel Finder - A RESTful directory service for a list of channels.
- pvinfo - Web interface to ChannelFinder with integrations to other high-level control applications.
- pyCFClient - Python client library for the ChannelFinder directory service.
- recsync - EPICS Record Synchronizor.
- recsync-rs - Rust implementation of the RecSync protocol with Python bindings.
- cfNameserver - pvAccess PV name server that resolves PVs using ChannelFinder and recsync information.
- Alarm Service - EPICS alarm handling system, part of the Phoebus suite.
- alarm-logger - Phoebus service that archives alarm events to Elasticsearch for historical search.
- alarm-config-logger - Phoebus service that tracks and logs Alarm Service configuration changes.
- alh - Alarm Handler: legacy GUI tool for monitoring and acknowledging EPICS alarms. Superseded by the Phoebus alarm system.
- phoebus-olog - Online logbook service for experimental logging, integrated with the Phoebus ecosystem.
- phoebus-olog-web-client - ReactJS web client for the Phoebus Olog logbook service.
- Olog Service - Java EE backend logbook service for EPICS experimental logging.
- Olog logbook - Lightweight HTML5/jQuery web client for Olog Service. Superseded by phoebus-olog-web-client.
- ELOG - Lightweight electronic logbook widely used at physics facilities alongside EPICS (PSI).
- py_elog - Python client for reading and writing ELOG logbook entries (PSI).
- ioclogserv2 - More flexible reimplementation of the EPICS IOC log server.
- VisualDCT - Visual Database Configuration Tool: graphical editor for EPICS database files.
- epicsdbbuilder - Python library for programmatically building EPICS database files (Diamond Light Source).
- whatrecord - IOC meta-information tool: parses EPICS databases, startup scripts, and snl programs.
- dbtoolspy - Python module for reading and parsing EPICS database files (PSI).
- ioc-clone - Captures a snapshot of PV values as a loadable
.dbfile. - oac-tree - Behavior-tree-based procedure sequencing framework for EPICS control systems.
- phoebusgen - Python library for generating Phoebus OPI display files programmatically.
- phoebus-converter - Converts legacy .opi (CSS/BOY) and .adl (MEDM) display files to Phoebus .bob format.
- c2dataviewer - Python GUI front-end for visualizing AreaDetector and pvAccess image data.
- GATO - Legacy generator tool for EPICS display files. Archived.
- lewis - Python framework for writing simulated hardware devices for testing EPICS IOC control systems.
- epics-rs - Pure-Rust EPICS Simulation framework: IOC core, CA, pvAccess, asyn, motor, areaDetector, and modbus ports.
- EPICS-IOC-Demo - Simple example IOC (Asyn, Calc, StreamDevice) with a TCP/IP serial simulator.
- ServiceTestIOC - Minimal IOC for testing EPICS middleware services.
- tc32sim - EPICS IOC simulator for TC-32 thermocouple devices.
- epics-modbus-example - Example IOC using the modbus driver against a simulated PLC.
- vxi11sim - Simple simulated VXI-11 server for testing instrument communication.
- cashark - Wireshark dissector plugin for decoding EPICS Channel Access and pvAccess network traffic.
- EpicsSniffer - GUI tool for analyzing EPICS Channel Access traffic in real time and from pcap files (PSI).
- archstats - EPICS IOC providing Archiver Appliance health and statistics records (SLAC/PCDS).
- ci-core-dumper - Automates analysis of core dumps from crashes during CI builds and test runs.
- EPICS Training - GitHub organization of official EPICS training courses and hands-on materials.
- training-collection - Parent repo bundling all modules for an EPICS training course.
- training-vm - Flexible, maintainable EPICS training VM built with VirtualBox and Ansible.
- epics7-overview - Overview of EPICS 7 with examples from QSRV2, PVXS, and P4P.
- phoebus-training - Training material and references for Phoebus.
- stream-introduction - Introductory training for StreamDevice.
- opcua-support - Introduction and hands-on for the EPICS OPC UA device support.
- areadetector-training - Hands-on training for areaDetector.
- epics-trainings - EPICS environment training materials and exercises.
- RTEMS Tutorial - Eric Norum's "Getting Started with RTEMS" tutorial and build scripts, for EPICS IOCs on RTEMS.
- EPICS Extensions - The following list gives access to individual pages for most of the standard EPICS host tools and CA clients.
- EPICS SoftSupport - The following table contains an index of EPICS Soft Support modules available for use within IOCs.
- EPICS Related Software - The official EPICS documentation catalog of related software, modules, and tools.
- Tango Controls - Free open-source device-oriented control system framework used widely at European facilities; the main open-source alternative to EPICS.