인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
배포 및 운영 · SKILL.md

local-development

local-development

Operate the Airweave local Docker stack safely: start, reuse, restart, recreate, destroy, seed environment, check ports, and recover health failures.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: local-development description: "Operate the Airweave local Docker stack safely: start, reuse, restart, recreate, destroy, seed environment, check ports, and recover health failures." metadata: disco-role: operating disable-model-invocation: true license: MIT

Airweave Local Development

Use this sub-skill when a future Airweave task needs the local Docker stack running or diagnosed. It owns stack bootstrap, restart/recreate/destroy decisions, .env seeding, service profiles, port checks, and health recovery.

Do not use this sub-skill for backend endpoint details, connector implementation, frontend page logic, MCP transport behavior, or Monke connector orchestration. After the stack is healthy, route search, collection, source-connection, connect-session, and webhook workflows to ../backend-api/SKILL.md.

Safe operating rules

  1. Work from an explicit repository root. The bundled helper accepts --repo-root /path/to/airweave and works from any current directory.
  2. Prefer status before mutation:
    bash skills/disco/airweave/sub-skills/local-development/scripts/local-stack.sh \
      --repo-root "$AIRWEAVE_REPO" status
    
  3. A plain start is state-preserving: it seeds .env only when needed, starts missing/stopped services, and reuses running containers instead of deleting data.
  4. Use restart for already-created containers when you want to preserve Postgres/Redis/Vespa volumes.
  5. Use recreate only when container state is stale or service definitions changed; it removes compose containers and volumes, then starts fresh from the current .env.
  6. Use destroy only with explicit user intent. It removes compose containers and Docker volumes; it does not intentionally edit .env or purge manually managed host files.

Common commands

# Fresh or reuse-safe start, including backend, frontend, connect widget, Vespa, Temporal, Redis, Postgres, Svix.
bash skills/disco/airweave/sub-skills/local-development/scripts/local-stack.sh \
  --repo-root "$AIRWEAVE_REPO" start

# Backend/service stack without frontend UI.
bash skills/disco/airweave/sub-skills/local-development/scripts/local-stack.sh \
  --repo-root "$AIRWEAVE_REPO" start --skip-frontend

# Preserve data; restart existing containers and rerun health checks.
bash skills/disco/airweave/sub-skills/local-development/scripts/local-stack.sh \
  --repo-root "$AIRWEAVE_REPO" restart

# Recreate containers and compose volumes from current repo config.
bash skills/disco/airweave/sub-skills/local-development/scripts/local-stack.sh \
  --repo-root "$AIRWEAVE_REPO" recreate

# Destructive cleanup; add --yes for noninteractive confirmation.
bash skills/disco/airweave/sub-skills/local-development/scripts/local-stack.sh \
  --repo-root "$AIRWEAVE_REPO" destroy

Equivalent environment toggles are supported for automation: NONINTERACTIVE=1, SKIP_FRONTEND=1, SKIP_CONNECT=1, SKIP_LOCAL_EMBEDDINGS=1, ENABLE_DOCLING=1, VERBOSE=1, and QUIET=1.

Startup decisions

  • Fresh checkout with no .env: the helper copies .env.example, generates missing ENCRYPTION_KEY, STATE_SECRET, SVIX_JWT_SECRET, FIRST_SUPERUSER_PASSWORD, and POSTGRES_PASSWORD, fills safe local defaults such as FIRST_SUPERUSER=admin@example.com, POSTGRES_USER=airweave, SKIP_AZURE_STORAGE=true, STORAGE_BACKEND=filesystem, and SPARSE_EMBEDDER=fastembed_bm25.
  • Embeddings: OpenAI keys prefer openai_text_embedding_3_small with 1536 dimensions and skip the local embeddings container. Mistral keys prefer mistral_embed with 1024 dimensions. No API key on a freshly seeded env uses local_minilm with 384 dimensions and starts the local embeddings container. An existing .env is not overwritten except for missing required values.
  • Reusing containers: if Airweave containers already run, start reports status instead of recreating them. If containers exist but are stopped, start brings them back up and runs health checks.
  • Optional profiles: --skip-frontend, --skip-connect, --skip-local-embeddings, and --enable-docling map to the compose profiles for frontend, connect widget, local embeddings, and Docling OCR.

Expected local service surface

See references/local-stack.md for the service graph, ports, startup modes, and health commands. The primary expected endpoints are:

  • Backend API: http://localhost:8001, health at /health and readiness at /health/ready
  • Frontend UI: http://localhost:8080 unless skipped
  • Connect widget: http://localhost:8082 unless skipped
  • Vespa document/query API: http://localhost:8081, config server on 19071
  • Temporal gRPC/UI: 7233, 8233, and http://localhost:8088
  • PostgreSQL: localhost:5432; Redis: localhost:6379; Svix: http://localhost:8071
  • Local embeddings: host 9878 when DENSE_EMBEDDER=local_minilm; Docling: 5001 only when enabled

Verification hooks

For command-level checks before a real stack run:

bash -n skills/disco/airweave/sub-skills/local-development/scripts/local-stack.sh
bash skills/disco/airweave/sub-skills/local-development/scripts/local-stack.sh --help
bash skills/disco/airweave/sub-skills/local-development/scripts/local-stack.sh --repo-root "$AIRWEAVE_REPO" status

For a backend-native smoke after the stack is healthy and a Python 3.13 backend environment with pytest/pytest-asyncio is active:

cd "$AIRWEAVE_REPO/backend"
TEST_ENV=local python -m pytest tests/e2e/smoke/test_storage_backend.py -q

This storage smoke verifies the backend health endpoint, stub-source sync, ARF files, manifests, and entity files. If it fails because stub is unavailable, check whether internal sources are enabled for the local test environment before treating storage as broken.

Troubleshooting entry points

  • Docker or Compose missing, daemon down, or port conflicts: references/troubleshooting.md#docker-compose-and-port-failures
  • Missing or invalid env values, including STATE_SECRET and SVIX_JWT_SECRET length validation: references/troubleshooting.md#environment-and-settings-failures
  • Vespa init or schema dimension mismatch: references/troubleshooting.md#vespa-failures
  • Backend, Temporal worker, Svix, or storage smoke failures: references/troubleshooting.md#backend-worker-svix-and-storage-failures
저장한 Skills