Files
OpenJarvis/.gitignore
T
krypticmouseandClaude Opus 4.7 9cd760ad1e security(deploy): stop default deployments shipping an open, unauthenticated server (#221)
All three deployment methods bound 0.0.0.0:8000 with no API key, so following
the README produced a server reachable from any device on the network with no
auth. `check_bind_safety` already refuses to start a non-loopback bind without
a key (so these configs actually failed to start) — this wires the key in so
the documented path yields a *working, authenticated* server.

- docker-compose.yml: require `OPENJARVIS_API_KEY` via `${VAR:?...}` so
  `docker compose up` fails fast when unset; added `deploy/docker/.env.example`
  (un-ignored in .gitignore).
- systemd: add `EnvironmentFile=/etc/openjarvis/env` (no `-` prefix, so a
  missing key file blocks startup rather than exposing an open server).
- launchd: bind `127.0.0.1` by default (the personal-device default — no
  network exposure, no key needed) with a documented, commented opt-in to
  0.0.0.0 + `OPENJARVIS_API_KEY`. Avoids shipping a usable default credential.
- Docs (docker/systemd/launchd) updated with the key-setup step.
- Tests assert each config can't reintroduce an open server, plus
  `check_bind_safety` behavior across loopback/public × key/no-key.

Closes #221

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 23:56:55 +00:00

128 lines
2.2 KiB
Plaintext

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# Distribution / packaging
dist/
build/
*.egg-info/
*.egg
# Virtual environments
.venv/
venv/
env/
# IDE
.idea/
.vscode/
*.swp
*.swo
*~
# Testing
.pytest_cache/
.ruff_cache/
.coverage
htmlcov/
# uv
# Note: uv.lock is intentionally tracked — it pins all transitive deps for reproducibility.
# Uncomment the line below only if you deliberately choose not to commit the lock file.
# uv.lock
# OS
.DS_Store
Thumbs.db
# Secrets
.env
.env.*
# ...but keep checked-in example/templates (never contain real secrets)
!.env.example
!**/.env.example
# Project
*.sqlite
*.db
*.jsonl
*.npz
*.log
results/
logs/
# Anchored to repo root — DO NOT use the unanchored form `traces/`.
# hatchling honors .gitignore when building the wheel; an unanchored
# `traces/` pattern matches src/openjarvis/traces/ and silently drops
# the runtime module from the wheel (issue #372).
/traces/
coding_task_*
get-pip.py
# Junk from mocked-path tests that write to their mock's __repr__ as a path
MagicMock/
# MkDocs build output
site/
# Frontend
frontend/node_modules/
frontend/dist/
# Desktop
desktop/node_modules/
desktop/dist/
src/openjarvis/server/static/
# Desktop (Tauri)
frontend/src-tauri/target/
# Worktrees
.worktrees/
# Rust
target/
# Claude plan artifacts
docs/plans/
docs/superpowers/
.superpowers/
# Claude Code project instructions (per-developer)
CLAUDE.md
.claude/
# Tauri auto-generated schemas
**/src-tauri/gen/schemas/
# NFS lock artifacts
.nfs*
**/.nfs*
# Research output
research_mining_*
.python-version
src/openjarvis/channels/whatsapp_baileys_bridge/node_modules/
# SQLite in-memory artifacts
:memory:
# Dogfood reports (regenerated locally; not for VCS)
dogfood_report*.md
# Second Repos
Inline/
scratch/
# ---------------------------------------------------------------------------
# Distillation runtime artifacts (defense in depth — these should always live
# in ~/.openjarvis/, never inside the source tree, but we ignore them here in
# case OPENJARVIS_HOME is misconfigured during dev)
# ---------------------------------------------------------------------------
.openjarvis/
learning.db
**/learning/sessions/
**/learning/pending_review/
**/learning/benchmarks/
**/teacher_traces/
*.session.json