Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
.git
.github
.npm-cache
.tmp-vitest
benchmarks/output
build-env-*
build-reqs-*.txt
docs/handoffs
node_modules
python/.venv
python/build
python/dist
python/*.egg-info
python/**/__pycache__
test-*-data
tests
pip-*
*.db
*.db-shm
*.db-wal
21 changes: 21 additions & 0 deletions .env.docker.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Docker-specific Audrey configuration
# Copy to .env and edit before running: docker compose up -d --build

# API key for Bearer token auth (strongly recommended for Docker deployments)
AUDREY_API_KEY=change-me-to-a-real-secret

# Embedding provider: local | gemini | openai (default: local)
AUDREY_EMBEDDING_PROVIDER=local

# Device for local embeddings: cpu | gpu (default: cpu in Docker)
AUDREY_DEVICE=cpu

# LLM provider for consolidation/reflection (optional)
# AUDREY_LLM_PROVIDER=anthropic
# ANTHROPIC_API_KEY=

# Published port on host (default: 3487)
# AUDREY_PUBLISHED_PORT=3487

# Gemini embeddings (alternative to local)
# GOOGLE_API_KEY=
42 changes: 42 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,48 @@ jobs:
- run: npm run bench:memory:check
- run: npm run pack:check

python-sdk:
name: Python SDK on 3.11
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm

- uses: actions/setup-python@v5
with:
python-version: '3.11'

- run: npm ci
- run: python -m pip install --upgrade pip setuptools wheel build
- run: python -m pip install -e ./python
- run: python -m unittest discover -s python/tests -v
- run: python -m build --no-isolation python

docker-smoke:
name: Docker smoke on Ubuntu
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- run: docker build -t audrey:ci .
- run: docker run -d --name audrey-smoke -p 3487:3487 -e AUDREY_EMBEDDING_PROVIDER=mock -e AUDREY_LLM_PROVIDER=mock -e AUDREY_API_KEY=test-secret audrey:ci
- run: |
for i in $(seq 1 30); do
if curl -fsS -H "Authorization: Bearer test-secret" http://127.0.0.1:3487/health; then
exit 0
fi
sleep 2
done
docker logs audrey-smoke
exit 1
- run: docker rm -f audrey-smoke

windows-smoke:
name: Windows smoke on Node 20
runs-on: windows-latest
Expand Down
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
node_modules/
.npm-cache/
audrey-data/
.tmp/
.tmp-vitest/
*.db
*.db-wal
*.db-shm
Expand All @@ -8,3 +11,12 @@ CLAUDE.md
.worktrees/
benchmarks/output/
benchmarks/.tmp/
python/build/
python/dist/
python/*.egg-info/
python/.venv/
python/.pytest_cache/
python/**/__pycache__/
pip-*/
build-env-*/
build-reqs-*.txt
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ npm test
npm run pack:check
```

Node `>=18` is required.
Node `>=20` is required.

## What Good Contributions Look Like

Expand Down
29 changes: 29 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
FROM node:22-bookworm-slim

WORKDIR /app

ENV NODE_ENV=production \
AUDREY_HOST=0.0.0.0 \
AUDREY_PORT=3487 \
AUDREY_DATA_DIR=/data \
AUDREY_DEVICE=cpu

RUN apt-get update \
&& apt-get install -y --no-install-recommends python3 make g++ ca-certificates \
&& rm -rf /var/lib/apt/lists/*

COPY package.json package-lock.json ./
RUN npm ci --omit=dev

COPY src ./src
COPY mcp-server ./mcp-server
COPY types ./types
COPY README.md LICENSE ./

VOLUME ["/data"]
EXPOSE 3487

HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=5 \
CMD ["node", "--input-type=module", "-e", "const headers = process.env.AUDREY_API_KEY ? { Authorization: 'Bearer ' + process.env.AUDREY_API_KEY } : {}; fetch('http://127.0.0.1:3487/health', { headers }).then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1));"]

CMD ["node", "mcp-server/index.js", "serve"]
Loading
Loading