WEISS is a no-code, drag-and-drop system for building web-based EPICS operation interfaces. It provides a responsive editor, live PV communication, and a lightweight deployment model.
If you are in a hurry: Quick Start.
Try it out: https://demo.weiss-controls.org.
The demo connects to a real IOC. For the demo, all edits stay in your browser only. Use Load Demo anytime to restore.
- Client-side rendering: the client browser performs most work; backend load stays minimal.
- Ease of access: use any modern browser—no remote desktops or local tools required. Access control relies on standard security mechanisms (network restrictions, authentication, reverse proxies, etc).
- Built for scale: concurrent users do not require dedicated VMs or graphical sessions.
- Global ecosystem: web technologies have one of the largest developer ecosystems, offering libraries, tools, and best practices beyond the scientific environment niche.
- Integration friendly: easy to connect with authentication systems (LDAP), GitHub/GitLab, and other modern tools.
- Drag-and-drop editor with grid snapping, alignment, grouping, layering, keyboard shortcuts.
- Live EPICS PV communication: supports both Channel Access (CA) and PV Access (PVA) protocols via community-validated implementations p4p and PyEpics.
- Runtime vs edit mode: instantly start and stop communication with a switch button.
- Extensible widget library: ready-to-use components for common controls and displays, others can be easily created.
- Designed for usability : responsive UI, straightforward layout logic, modern development stack.
- Portable JSON format: import/export or create OPIs programatically using simple JSON files.
Planned improvements (access control, OPI distribution, repository integration, etc.) are tracked in the WEISS Project Dashboard.
- Install Docker
Instructions: https://docs.docker.com/engine/install/.
Tested with Docker Engine 28.1.1, but other versions should work.
Tested with Docker Engine from 28.1.1, but most versions are expected to work fine.
- Clone the repository:
git clone https://github.com/weiss-controls/weiss.git- Create your
.envfile: You can start by just copying .env.example:
cp .env.example .envThe whole behaviour of the app is configured via environment variables. The easiest way to validate your build is to start with
VITE_DEMO_MODE=true. This allows you to spin up an instance of WEISS Demo locally and quickly explore the tool. Instructions on setting up HTTPS, Microsoft Auth and Git credentials coming soon.
Adjust EPICS variables as needed (DEFAULT_PROTOCOL, EPICS_XXX_ADDR_LIST, etc.) so WEISS can find
your PVs. If running on a server (not localhost), make sure to modify FRONTEND_URL with your
server's IP address or DNS name - this allows .
- Build and start the system. From the root of the repo, run:
docker compose up -dOnce built, three services should be launched:
weiss-epicsws: the EPICS communication layer.weiss-api: the backend API for file and git interaction.weiss: WEISS front-end application - accessible at http://localhost (or your server address if applicable).
💡 TIP: if you do not have an IOC available for testing, try running the development demo IOC:
docker compose -f docker-compose-dev.yml up -d weiss-demoioc. This will build and run the IOC from examples. The corresponding OPIs can be imported from weiss-demo-opis using WEISS file browser.
The development version mounts the source code so you can see live changes while coding. It also provides a demoioc for convenience.
Run:
docker compose -f docker-compose-dev.yml upThis launches four services:
weiss-epicsws-dev: the EPICS communication layer.weiss-api-dev: the backend API for file and git interaction.weiss-dev: The WEISS front-end application. It should be accessible inhttp://localhost:5173.weiss-demoioc: EPICS demonstration IOC (see examples/exampleIOC).
For the API, the service should be restarted for endpoint changes to take effect. Remind to set
FRONTEND_URLtohttp://localhost:5173.
- Built with React + TypeScript
- UI components are based on Material UI: https://mui.com/material-ui/
- Some references used for this project: Taranta, React Automation Studio, PVWS, pyDM, Phoebus.
