Files

73 lines
1.7 KiB
Docker

FROM kalilinux/kali-rolling:latest
# Install Python 3, build dependencies, and pentest tools
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 \
python3-venv \
python3-pip \
git \
curl \
ca-certificates \
tini \
dnsutils \
jq \
nmap \
gobuster \
sqlmap \
nikto \
hydra \
ffuf \
whatweb \
wafw00f \
exploitdb \
nuclei \
httpx-toolkit \
dnsx \
subfinder \
&& rm -rf /var/lib/apt/lists/* \
&& ln -sf /usr/bin/python3 /usr/bin/python
# Install uv package manager & hermes-agent CLI + violin plugin deps
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:/root/.cargo/bin:${PATH}"
ENV HOME="/root"
RUN pip install --ignore-installed --break-system-packages \
hermes-agent \
duckduckgo-search \
tirith \
filelock \
bashlex \
netaddr \
yarl
# Set up working directory
WORKDIR /violin
# Copy pyproject.toml and lock files first for efficient caching
COPY pyproject.toml uv.lock /violin/
# Copy repo contents
COPY . /violin/
# Install the violin profile into Hermes per official distribution.yaml spec
RUN hermes profile install /violin --name violin -y
# Create home profile link so script paths resolve consistently under Hermes profile execution
RUN mkdir -p /root/.hermes/profiles/violin/home \
&& ln -sf /root/.hermes /root/.hermes/profiles/violin/home/.hermes
# Sync virtualenv dependencies
RUN uv sync --dev
# Ensure host engagements folder can be mounted
VOLUME ["/violin/engagements"]
# Reap orphaned subprocesses created by benchmark and guard executions.
ENTRYPOINT ["/usr/bin/tini", "--"]
# Default entrypoint
CMD ["uv", "run", "python", "-m", "benchmark.run"]