diff --git a/Dockerfile b/Dockerfile
index 99f4a1d..600070d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,50 +1,62 @@
-# syntax=docker/dockerfile:1.3-labs
 FROM fedora:39 AS builder
 
 # To build:
 # docker build -t nebulous/solver .
 
-# To run, resulting in a terminal for further experiments:
-# docker run -it nebulous/solver
+#
+# For a shell, to diagnose problems etc.:
+# docker run --rm -it --entrypoint /bin/bash nebulous/solver
 
+RUN mkdir -p /solver
 WORKDIR /solver
-COPY ./ /solver
 
-RUN <<EOF
-    # Development framework
-    dnf --assumeyes install gcc-c++ make git-core boost boost-devel ccache qpid-proton-cpp qpid-proton-cpp-devel json-c json-devel json-glib jsoncpp jsoncpp-devel coin-or-Couenne wget
-    # Dependencies
-    git clone https://github.com/jarro2783/cxxopts.git CxxOpts
-    git clone https://github.com/GeirHo/TheronPlusPlus.git Theron++
+# Development framework, dependencies
+RUN dnf --assumeyes install gcc-c++-13.2.1-6.fc39 make-1:4.4.1-2.fc39 git-core-2.44.0-1.fc39 boost-devel-1.81.0-8.fc39 ccache-4.8.2-2.fc39 qpid-proton-cpp-devel-0.38.0-4.fc39 json-c-0.17-1.fc39 json-devel-3.11.2-3.fc39 json-glib-1.8.0-1.fc39 jsoncpp-1.9.5-5.fc39 jsoncpp-devel-1.9.5-5.fc39 coin-or-Couenne-0.5.8-12.fc39 wget-1.21.3-7.fc39 && \
+    dnf clean all && \
+    git clone https://github.com/jarro2783/cxxopts.git CxxOpts && \
+    git clone https://github.com/GeirHo/TheronPlusPlus.git Theron++ && \
     mkdir Theron++/Bin
 
-    # Install AMPL library
-    wget --no-verbose https://portal.ampl.com/external/?url=https://portal.ampl.com/dl/amplce/ampl.linux64.tgz -O ampl.linux64.tgz
-    tar --file=ampl.linux64.tgz --extract
-    mv ampl.linux-intel64 AMPL
+# Install AMPL library
+RUN wget --progress=dot:giga https://portal.ampl.com/external/?url=https://portal.ampl.com/dl/amplce/ampl.linux64.tgz -O ampl.linux64.tgz && \
+    tar --file=ampl.linux64.tgz --extract && \
+    mv ampl.linux-intel64 AMPL && \
     rm ampl.linux64.tgz
-EOF
 
 # Make AMPL shared libraries findable
 ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/solver/AMPL:/solver/AMPL/amplapi/lib"
 
+COPY . /solver
+
 # Build solver
-RUN make SolverComponent -e THERON=./Theron++ AMPL_INCLUDE=./AMPL/amplapi/include AMPL_LIB=./AMPL/amplapi/lib  CxxOpts_DIR=./CxxOpts/include
+RUN make SolverComponent -e THERON=./Theron++ AMPL_INCLUDE=./AMPL/amplapi/include AMPL_LIB=./AMPL/amplapi/lib  CxxOpts_DIR=./CxxOpts/include && \
+    make clean
 
 # ============================================================
 
 FROM fedora:39
 WORKDIR /solver
-RUN dnf --assumeyes install boost qpid-proton-cpp json-c json-glib jsoncpp coin-or-Couenne
+RUN dnf --assumeyes install boost-1.81.0-8.fc39 qpid-proton-cpp-0.38.0-4.fc39 json-c-0.17-1.fc39 json-glib-1.8.0-1.fc39 jsoncpp-1.9.5-5.fc39 coin-or-Couenne-0.5.8-12.fc39 && \
+    dnf clean all
+
 COPY --from=builder /solver /solver
 ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/solver/AMPL:/solver/AMPL/amplapi/lib"
 
-# 
-# We set constant `--ModelDir` and `--AMPLDir`; the other arguments can be
-# given on the command line, like so (note that `--Endpoint` is mandatory):
-# 
-# docker run nebulous/solver --Broker=https://somewhere.else/ --Endpoint=my-app-id
-# 
-# For a shell, to diagnose problems etc.:
-# docker run --rm -it --entrypoint /bin/bash nebulous/solver
-ENTRYPOINT ["/solver/SolverComponent", "--ModelDir=/tmp", "--AMPLDir=/solver/AMPL"]
+# The `SolverComponent` arguments `--ModelDir` and `--AMPLDir` are
+# constant, the other arguments can be given on the command line or
+# via environment variables:
+#
+#   -b amqbroker (variable ACTIVEMQ_HOST, default localhost)
+#   -P amqpport (variable ACTIVEMQ_PORT, default 5672)
+#   -u user (variable ACTIVEMQ_USER, default admin)
+#   -p amqppassword (variable ACTIVEMQ_PASSWORD)
+#   -e appid (variable APPLICATION_ID)
+#   -l license (variable AMPL_LICENSE)
+#
+# The docker can be started with explicit parameters, environment
+# variables or a mix of both.  Parameters override variables.
+#
+#     docker run -e APPLICATION_ID="my_app_id" nebulous/solver -b="https://amqp.example.com/" -p=s3kr1t
+#
+
+ENTRYPOINT ["/solver/start-solver.sh"]
diff --git a/charts/nebulous-optimiser-solver/templates/deployment.yaml b/charts/nebulous-optimiser-solver/templates/deployment.yaml
index 66d8a07..340666a 100644
--- a/charts/nebulous-optimiser-solver/templates/deployment.yaml
+++ b/charts/nebulous-optimiser-solver/templates/deployment.yaml
@@ -33,20 +33,26 @@ spec:
             {{- toYaml .Values.securityContext | nindent 12 }}
           image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
           imagePullPolicy: {{ .Values.image.pullPolicy }}
-          ports:
-            - name: http
-              containerPort: 8080
-              protocol: TCP
-          livenessProbe:
-            httpGet:
-              path: /
-              port: http
-          readinessProbe:
-            httpGet:
-              path: /
-              port: http
           resources:
             {{- toYaml .Values.resources | nindent 12 }}
+          env:
+          - name: APPLICATION_ID
+          - name: ACTIVEMQ_HOST
+            value: {{ .Values.activemq.ACTIVEMQ_HOST }}
+          - name: ACTIVEMQ_PORT
+            value: {{ .Values.activemq.ACTIVEMQ_PORT }}
+          - name: ACTIVEMQ_USER
+            value: {{ .Values.activemq.ACTIVEMQ_USER }}
+          - name: ACTIVEMQ_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: {{ .Values.activemqSecret.secretName }}
+                key: {{ .Values.activemqSecret.secretKey }}
+          - name: AMPL_LICENSE
+            valueFrom:
+              secretKeyRef:
+                name: {{ .Values.amplLicense.secretName }}
+                key: {{ .Values.amplLicense.secretKey }}
       {{- with .Values.nodeSelector }}
       nodeSelector:
         {{- toYaml . | nindent 8 }}
@@ -59,3 +65,4 @@ spec:
       tolerations:
         {{- toYaml . | nindent 8 }}
       {{- end }}
+
diff --git a/charts/nebulous-optimiser-solver/values.yaml b/charts/nebulous-optimiser-solver/values.yaml
index 9fe40af..d8ad764 100644
--- a/charts/nebulous-optimiser-solver/values.yaml
+++ b/charts/nebulous-optimiser-solver/values.yaml
@@ -5,7 +5,7 @@
 replicaCount: 1
 
 image:
-  repository: "quay.io/nebulous/optimiser-solver-java-spring-boot-demo"
+  repository: "quay.io/nebulous/optimiser-solver"
   pullPolicy: IfNotPresent
   # Overrides the image tag whose default is the chart appVersion.
   tag: ""
@@ -36,10 +36,6 @@ securityContext: {}
   # runAsNonRoot: true
   # runAsUser: 1000
 
-service:
-  type: ClusterIP
-  port: 80
-
 ingress:
   enabled: false
   className: ""
@@ -80,3 +76,16 @@ nodeSelector: {}
 tolerations: []
 
 affinity: {}
+
+activemq:
+  ACTIVEMQ_HOST: nebulous-activemq
+  ACTIVEMQ_PORT: 5672
+  ACTIVEMQ_USER: admin
+
+activemqSecret:
+  secretName: "activeMqPassword"
+  secretKey: "ACTIVEMQ_PASSWORD"
+
+amplLicense:
+  secretName: "ampl-license"
+  secretKey: "AMPL_LICENSE"
diff --git a/docker-compose.yaml b/docker-compose.yaml
new file mode 100644
index 0000000..ee90016
--- /dev/null
+++ b/docker-compose.yaml
@@ -0,0 +1,46 @@
+# This file tests starting the solver inside a container.  Since the
+# solver will not start without a connection to an ActiveMQ broker,
+# start one alongside it.
+
+# If we have an application id, run the solver like this:
+#
+#    APPLICATION_ID="my_application_id" docker-compose up
+#
+services:
+  activemq:
+    image: apache/activemq-classic
+    ports:
+      - "61616:61616"
+      - "5672:5672"
+      - "8161:8161"
+    networks:
+      - nebulous-activemq
+    container_name: myActiveMQ
+    environment:
+      ACTIVEMQ_WEB_USER: admin
+      ACTIVEMQ_WEB_PASSWORD: admin
+      container_name: activemq
+    healthcheck:
+      test: curl -u admin:admin -H origin:localhost --silent --show-error "http://localhost:8161/api/jolokia/exec/org.apache.activemq:type=Broker,brokerName=localhost,service=Health/healthStatus" | tee /dev/tty | grep --silent -e 'Getting Worried' -e 'Good'
+      interval: 5s
+      timeout: 5s
+      retries: 5
+
+  solver:
+    image: nebulous/solver
+    depends_on:
+      activemq:
+        condition: service_healthy
+    links:
+      - activemq
+    networks:
+      - nebulous-activemq
+    environment:
+      ACTIVEMQ_HOST: activemq
+      APPLICATION_ID: ${APPLICATION_ID:-invalid-application-id}
+      # Note that an invalid license crashes the solver; no license lets it start
+      AMPL_LICENSE: ${AMPL_LICENSE}
+    container_name: solver
+
+networks:
+  nebulous-activemq:
diff --git a/java-spring-boot-demo/.gitignore b/java-spring-boot-demo/.gitignore
deleted file mode 100644
index 549e00a..0000000
--- a/java-spring-boot-demo/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/java-spring-boot-demo/Dockerfile b/java-spring-boot-demo/Dockerfile
deleted file mode 100644
index 427e30e..0000000
--- a/java-spring-boot-demo/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Build stage
-#
-FROM docker.io/library/maven:3.9.2-eclipse-temurin-17 AS build
-COPY src /home/app/src
-COPY pom.xml /home/app
-RUN mvn -f /home/app/pom.xml clean package
-
-#
-# Package stage
-#
-FROM docker.io/library/eclipse-temurin:17-jre
-COPY --from=build /home/app/target/demo-0.0.1-SNAPSHOT.jar /usr/local/lib/demo.jar
-EXPOSE 8080
-ENTRYPOINT ["java","-jar","/usr/local/lib/demo.jar"]
diff --git a/java-spring-boot-demo/pom.xml b/java-spring-boot-demo/pom.xml
deleted file mode 100644
index 76e0f0e..0000000
--- a/java-spring-boot-demo/pom.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-parent</artifactId>
-        <version>3.1.0</version>
-        <relativePath/> <!-- lookup parent from repository -->
-    </parent>
-    <groupId>com.example</groupId>
-    <artifactId>demo</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
-    <name>demo</name>
-    <description>Demo project for Spring Boot</description>
-    <properties>
-        <java.version>17</java.version>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-</project>
diff --git a/java-spring-boot-demo/src/main/java/com/example/demo/DemoApplication.java b/java-spring-boot-demo/src/main/java/com/example/demo/DemoApplication.java
deleted file mode 100644
index 094d95b..0000000
--- a/java-spring-boot-demo/src/main/java/com/example/demo/DemoApplication.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.example.demo;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class DemoApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(DemoApplication.class, args);
-    }
-
-}
diff --git a/java-spring-boot-demo/src/main/java/com/example/demo/DemoController.java b/java-spring-boot-demo/src/main/java/com/example/demo/DemoController.java
deleted file mode 100644
index 61a5075..0000000
--- a/java-spring-boot-demo/src/main/java/com/example/demo/DemoController.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.example.demo;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-public class DemoController {
-
-    @RequestMapping("/")
-    public Object root() {
-        return null;
-    }
-
-}
diff --git a/java-spring-boot-demo/src/main/resources/application.properties b/java-spring-boot-demo/src/main/resources/application.properties
deleted file mode 100644
index e69de29..0000000
diff --git a/java-spring-boot-demo/src/test/java/com/example/demo/DemoApplicationTests.java b/java-spring-boot-demo/src/test/java/com/example/demo/DemoApplicationTests.java
deleted file mode 100644
index eaa9969..0000000
--- a/java-spring-boot-demo/src/test/java/com/example/demo/DemoApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.example.demo;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class DemoApplicationTests {
-
-    @Test
-    void contextLoads() {
-    }
-
-}
diff --git a/makefile b/makefile
index f49290a..835de05 100644
--- a/makefile
+++ b/makefile
@@ -3,21 +3,21 @@
 # Solver component
 #
 # The NebulOuS solver consists of several interacting actors using the AMQ
-# interface of the Theron++ framework. 
+# interface of the Theron++ framework.
 #
-# The following packages should be available on Fedora prior to compiling 
+# The following packages should be available on Fedora prior to compiling
 # the file
-# 
-# 	ccache 				# for effcient C++ compilations
-# 	qpid-proton-cpp* 	# Qpid Proton Active Message Queue protocol API
-# 	json-devel			# Niels Lohmann's JSON library
+#
+#	ccache			# for effcient C++ compilations
+#	qpid-proton-cpp*	# Qpid Proton Active Message Queue protocol API
+#	json-devel		# Niels Lohmann's JSON library
 #	coin-or-Couenne		# The solver to be used by AMPL
 #
-# In addtition the problem is formuated using A Mathematical Programming 
+# In addition the problem is formulated using A Mathematical Programming
 # Language (AMPL) and so it should be installed from
 # https://portal.ampl.com/user/ampl/request/amplce/trial/new
 #
-# There are source code dependencies that should be cloned to local disk 
+# There are source code dependencies that should be cloned to local disk
 #
 #	Theron++			# https://github.com/GeirHo/TheronPlusPlus.git
 #	cxxopts				# https://github.com/jarro2783/cxxopts.git
@@ -39,7 +39,7 @@ RM = rm -f
 # Paths
 #------------------------------------------------------------------------------
 #
-# The default values of the paths are given here to be overridden by build 
+# The default values of the paths are given here to be overridden by build
 # definitions on the command line for creating the component container.
 #
 # Location of the Theron++ framework relative to this make file and the code
@@ -54,8 +54,8 @@ AMPL_INCLUDE ?= /opt/AMPL/amplapi/include
 
 AMPL_LIB ?= /opt/AMPL/amplapi/lib
 
-# The solver component uses the CxxOpts class for parsing the command line 
-# options since it is header only and lighter than the Options library of 
+# The solver component uses the CxxOpts class for parsing the command line
+# options since it is header only and lighter than the Options library of
 # boost, which seems to have lost the most recent C++ features. The CxxOpts
 # library can be cloned from https://github.com/jarro2783/cxxopts
 
@@ -65,22 +65,22 @@ CxxOpts_DIR ?= /home/GHo/Documents/Code/CxxOpts/include
 # Options for the compiler and linker
 #------------------------------------------------------------------------------
 #
-# Optimisation -O3 is the highest level of optimisation and should be used 
-# with production code. -Og is the code optimising and offering debugging 
+# Optimisation -O3 is the highest level of optimisation and should be used
+# with production code. -Og is the code optimising and offering debugging
 # transparency and should be use while the code is under development
 
 OPTIMISATION_FLAG = -Og
 
-# It is useful to let the compiler generate the dependencies for the various 
-# files, and the following will produce .d files that can be included at the 
-# end. The -MMD flag is equivalent with -MD, but the latter will include system 
-# headers in the output (which we do not need here). The -MP includes an 
-# empty rule to create the dependencies so that make would not create any errors 
+# It is useful to let the compiler generate the dependencies for the various
+# files, and the following will produce .d files that can be included at the
+# end. The -MMD flag is equivalent with -MD, but the latter will include system
+# headers in the output (which we do not need here). The -MP includes an
+# empty rule to create the dependencies so that make would not create any errors
 # if the file name changes.
 
 DEPENDENCY_FLAGS = -MMD -MP
 
-# Options 
+# Options
 
 GENERAL_OPTIONS = -Wall -std=c++23 -ggdb -D_DEBUG
 INCLUDE_DIRECTORIES = -I. -I/usr/include -I$(THERON) -I$(AMPL_INCLUDE) \
@@ -89,12 +89,12 @@ INCLUDE_DIRECTORIES = -I. -I/usr/include -I$(THERON) -I$(AMPL_INCLUDE) \
 CXXFLAGS = $(GENERAL_OPTIONS) $(INCLUDE_DIRECTORIES) $(DEPENDENCY_FLAGS) \
 		   $(OPTIMISATION_FLAG)
 
-# Putting it together as the actual options given to the compiler and the 
-# linker. Note that pthread is needed on Linux systems since it seems to 
-# be the underlying implementation of std::thread. Note that it is 
-# necessary to use the "gold" linker as the standard linker requires 
-# the object files in the right order, which is hard to ensure with 
-# an archive, and the "gold" linker manages this just fine, but it 
+# Putting it together as the actual options given to the compiler and the
+# linker. Note that pthread is needed on Linux systems since it seems to
+# be the underlying implementation of std::thread. Note that it is
+# necessary to use the "gold" linker as the standard linker requires
+# the object files in the right order, which is hard to ensure with
+# an archive, and the "gold" linker manages this just fine, but it
 # requires the full static path to the custom Theron library.
 
 CFLAGS = $(DEPENDENCY_FLAGS) $(OPTIMISATION_FLAG) $(GENERAL_OPTIONS)
@@ -105,13 +105,13 @@ LDFLAGS = -fuse-ld=gold -ggdb -D_DEBUG -pthread $(THERON)/Theron++.a \
 # Theron library
 #------------------------------------------------------------------------------
 #
-# The Theron++ library must be built first and the following two targets 
-# ensures that Make will check if the libray is up-to-date or build it if 
+# The Theron++ library must be built first and the following two targets
+# ensures that Make will check if the libray is up-to-date or build it if
 # it is not.
 
-.PHONY: $(THERON)/Theron++.a 
+.PHONY: $(THERON)/Theron++.a
 
- $(THERON)/Theron++.a:
+$(THERON)/Theron++.a:
 	 make -C $(THERON) Library
 
 #------------------------------------------------------------------------------
@@ -139,13 +139,13 @@ $(OBJECTS_DIR)/%.o : %.cpp
 #------------------------------------------------------------------------------
 #
 
-# The only real target is to build the solver component whenever some of 
+# The only real target is to build the solver component whenever some of
 # the object files or the solver actors.
 
 SolverComponent: $(SOLVER_OBJECTS) $(THERON)/Theron++.a
 	$(CC) -o SolverComponent $(CXXFLAGS) $(SOLVER_OBJECTS) $(LDFLAGS)
 
-# There is also a standard target to clean the automatically generated build 
+# There is also a standard target to clean the automatically generated build
 # files
 
 clean:
@@ -156,4 +156,4 @@ clean:
 #------------------------------------------------------------------------------
 #
 
--include $(SOLVER_OBJECTS:.o=.d)
\ No newline at end of file
+-include $(SOLVER_OBJECTS:.o=.d)
diff --git a/start-solver.sh b/start-solver.sh
new file mode 100755
index 0000000..049da63
--- /dev/null
+++ b/start-solver.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/bash
+
+# call bash directly since we know we're on Fedora
+set -euf -o pipefail
+
+amqpbroker=${ACTIVEMQ_HOST:-localhost}
+amqpport=${ACTIVEMQ_PORT:-5672}
+amqpuser=${ACTIVEMQ_USER:-admin}
+amqppassword=${ACTIVEMQ_PASSWORD:-}
+appid=${APPLICATION_ID:-}
+license=${AMPL_LICENSE:-}
+
+while getopts b:P:u:p:e:l: name
+do
+    case $name in
+        b) amqpbroker="$OPTARG";;
+        p) amqppassword="$OPTARG";;
+        u) amqpuser="$OPTARG";;
+        P) amqpport="$OPTARG";;
+        e) appid="$OPTARG";;
+        l) license="$OPTARG";;
+        ?) printf "Usage: %s [-b amqbroker] [-P amqpport] [-u user] [-p amqppassword] [-e appid] [-l license]\n -b amqpbroker   overrides ACTIVEMQ_HOST (default localhost)\n -P amqpport     overrides ACTIVEMQ_PORT (default 5672)\n -u user         overrides ACTIVEMQ_USER (default admin)\n -p amqppassword overrides ACTIVEMQ_PASSWORD\n -e appid        overrides APPLICATION_ID\n -l license      overrides AMPL_LICENSE\n" "$0"
+        exit 2;;
+    esac
+done
+if [ -z "${appid}" ]; then
+    printf "Missing Application ID, unable to start the solver"
+    exit 1
+fi
+
+if [ -n "${license}" ] ; then
+    echo "creating license file /solver/AMPL/ampl.lic"
+    echo "$license" > /solver/AMPL/ampl.lic
+fi
+
+echo "Starting SolverComponent: app id='${appid}' broker='${amqpbroker}:${amqpport}'" && sync
+
+exec ./SolverComponent --AMPLDir=/solver/AMPL --ModelDir=/tmp --Broker="$amqpbroker" --Port="$amqpport" --User="$amqpuser" --Pw="$amqppassword" --Endpoint="$appid"
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index fa5a4ef..02b6dac 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -8,15 +8,15 @@
       - nebulous-optimiser-solver-container-images
     description: Build the container images.
     files: &image_files
-      - ^java-spring-boot-demo/
+      - ^/
     vars: &image_vars
       promote_container_image_job: nebulous-optimiser-solver-upload-container-images
       container_images:
-        - context: java-spring-boot-demo
+        - context: .
           registry: quay.io
-          repository: quay.io/nebulous/optimiser-solver-java-spring-boot-demo
+          repository: quay.io/nebulous/optimiser-solver
           namespace: nebulous
-          repo_shortname: optimiser-solver-java-spring-boot-demo
+          repo_shortname: optimiser-solver
           repo_description: ""
 
 - job:
@@ -44,7 +44,7 @@
     description: Run Hadolint on Dockerfile(s).
     vars:
       dockerfiles:
-        - java-spring-boot-demo/Dockerfile
+        - Dockerfile
 
 - job:
     name: nebulous-optimiser-solver-helm-lint
@@ -53,20 +53,3 @@
     vars:
       helm_charts:
         - ./charts/nebulous-optimiser-solver
-
-- job:
-    name: nebulous-optimiser-solver-apply-helm-charts
-    parent: nebulous-apply-helm-charts
-    dependencies:
-      - name: opendev-buildset-registry
-        soft: false
-      - name: nebulous-optimiser-solver-build-container-images
-        soft: true
-      - name: nebulous-optimiser-solver-upload-container-images
-        soft: true
-    requires:
-      - nebulous-optimiser-solver-container-images
-    description: Deploy a Kubernetes cluster and apply charts.
-    vars:
-      helm_charts:
-        nebulous-optimiser-solver: ./charts/nebulous-optimiser-solver
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index 845b1a1..70c03b7 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -2,18 +2,14 @@
     check:
       jobs:
         - opendev-buildset-registry
-        - nebulous-optimiser-solver-helm-lint
         - nebulous-optimiser-solver-build-container-images
         - nebulous-optimiser-solver-hadolint
-        - nebulous-platform-apply-helm-charts
         - nox-linters
     gate:
       jobs:
         - opendev-buildset-registry
-        - nebulous-optimiser-solver-helm-lint
         - nebulous-optimiser-solver-upload-container-images
         - nebulous-optimiser-solver-hadolint
-        - nebulous-platform-apply-helm-charts
         - nox-linters
     promote:
       jobs: