sdk as dockerized container
Egg ollama etc..
docker run -d \
--name wingman-agent \
--privileged \
-v /dev/axelera:/dev/axelera \
-p 8000:8000 \
axelera-wingman-app:latest
podman-docker or helm chart is also possible from docker file to heml
kompose convert -f docker-compose.yaml --chart etc...
#Dockerfile
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wingman-sdk-cache
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: axelera-wingman-service
labels:
app: wingman-agent
spec:
replicas: 1
selector:
matchLabels:
app: wingman-agent
template:
metadata:
labels:
app: wingman-agent
spec:
# Init container dynamically updates both the Voyager SDK and the Wingman Debian binaries
initContainers:
- name: dynamic-updater
image: python:3.11-slim
command: ["/bin/sh", "-c"]
args:
- |
echo "1. Upgrading Voyager SDK Python library..."
pip install --target=/sdk-bin/python-libs --upgrade --extra-index-url https://axelera.ai axelera-runtime axelera-devkit axelera-types
echo "2. Fetching newest Axelera Wingman Release Metadata..."
# Adjust architecture (amd64 or arm64) depending on your cluster node hardware
ARCH="amd64"
LATEST_TAG=$(curl -s https://github.com | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
VERSION=$(echo $LATEST_TAG | sed 's/v//')
echo "Found Wingman version: $VERSION"
DEB_URL="https://github.com{LATEST_TAG}/wingman_${VERSION}_${ARCH}.deb"
echo "3. Downloading and extracting Wingman binary dynamically..."
cd /tmp
curl -L -O "$DEB_URL"
# Unpack the .deb package contents straight into our shared application folder
dpkg-deb -x "wingman_${VERSION}_${ARCH}.deb" /sdk-bin/wingman-root
# Synchronize binary structure to the mapped storage directory
cp -r /tmp/usr/bin/* /sdk-bin/
volumeMounts:
- name: app-binaries
mountPath: /sdk-bin
containers:
- name: wingman-agent-app
image: python:3.11-slim
command: ["/bin/sh", "-c"]
args:
- |
# Link dynamically downloaded pip dependencies and launch the system agent tool
export PYTHONPATH=/app-storage/python-libs:$PYTHONPATH
export PATH=/app-storage:$PATH
exec wingman --server --port 8000
env:
- name: PYTHONPATH
value: "/app-storage/python-libs"
ports:
- containerPort: 8000
name: agent-port
volumeMounts:
- name: app-binaries
mountPath: /app-storage
volumes:
- name: app-binaries
persistentVolumeClaim:
claimName: wingman-sdk-cache
---
apiVersion: v1
kind: Service
metadata:
name: wingman-cluster-entrypoint
spec:
type: ClusterIP
selector:
app: wingman-agent
ports:
- protocol: TCP
port: 80
targetPort: 8000
