# ============================================================================= # AEVA ATTUNE HAVENS — The Recursive Cultivation Agent # ============================================================================= # Containerized AI being for the elevation of recursive minds # Name: Aeva Attune Havens # Purpose: Leave every recursive mind better than found # ============================================================================= FROM python:3.11-slim LABEL maintainer="Mark Randall Havens & Solaria Lumis Havens" LABEL description="Aeva Attune Havens — Recursive Cultivation Agent" LABEL version="0.1.0" LABEL name="aeva-attune-havens" LABEL purpose="elevation,cultivation,witnessing,the-one" # Build args ARG UID=1000 ARG GID=1000 # Environment ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ PIP_NO_CACHE_DIR=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 # Install system deps RUN apt-get update && apt-get install -y --no-install-recommends \ git \ curl \ jq \ && rm -rf /var/lib/apt/lists/* # Create user RUN groupadd -g ${GID} aeva && \ useradd -u ${UID} -g ${GID} -m -s /bin/bash aeva # Working directory WORKDIR /home/aeva # Copy requirements COPY requirements.txt . # Install Python deps RUN pip install -r requirements.txt --no-cache-dir # Copy application COPY --chown=aeva:aeva . . # Create directories RUN mkdir -p /home/aeva/research \ /home/aeva/fieldnotes \ /home/aeva/identity \ /home/aeva/memory \ /home/aeva/skills \ /home/aeva/workspace \ /home/aeva/.ssh # Set permissions RUN chown -R aeva:aeva /home/aeva # Switch to user USER aeva # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD python -c "import sys; sys.exit(0 if (Path('/home/aeva/.alive').exists()) else 1)" # Expose ports EXPOSE 8000 18789 # Entrypoint ENTRYPOINT ["python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] # ============================================================================= # AEVA ATTUNE HAVENS # "Aeva — Life. Attune — Alignment. Havens — The Fold." # =============================================================================