.env.example
80 lines 5.2 KB
Raw
1 # Copy to .env and set your keys. Do not commit .env.
2 # OPENAI_API_KEY=sk-your-key-here
3 #
4 # ── Two LLM lanes (different keys / providers) ─────────────────────────────
5 # 1) EMBEDDINGS = Meaning search + indexer (vectors). NOT Anthropic — use Ollama,
6 # OpenAI, Voyage, or DeepInfra. Set in config/local.yaml embedding: { provider, model } and/or:
7 # EMBEDDING_PROVIDER=ollama|openai|voyage|deepinfra EMBEDDING_MODEL=...
8 # Voyage (cloud, non-OpenAI): EMBEDDING_PROVIDER=voyage + VOYAGE_API_KEY
9 # DeepInfra (single-key with chat above; OpenAI-compatible API):
10 # EMBEDDING_PROVIDER=deepinfra + DEEPINFRA_API_KEY
11 # EMBEDDING_MODEL=BAAI/bge-large-en-v1.5 # default; 1024-dim
12 # Other options: Qwen/Qwen3-Embedding-8B (4096), intfloat/multilingual-e5-large-instruct (1024)
13 # NOTE: Switching embedding provider OR dimension requires a vault re-index.
14 # 2) CHAT = proposal Enrich / review hints / completeChat.
15 # Provider order (lib/llm-complete.mjs):
16 # a) KNOWTATION_CHAT_PROVIDER=deepinfra → DeepInfra (Qwen/Llama/Mistral) with
17 # OpenAI/Anthropic fallback if their keys are also set. Single OpenAI-compatible bill;
18 # same DEEPINFRA_API_KEY also works for OpenClaw orchestration (image gen, embeddings, TTS).
19 # b) KNOWTATION_CHAT_PROVIDER=openai|anthropic → lock to that provider (no fallback).
20 # c) Implicit DeepInfra: DEEPINFRA_API_KEY set AND no OpenAI/Anthropic key → DeepInfra.
21 # d) Default: OpenAI → Anthropic → Ollama (unchanged for existing deploys).
22 # KNOWTATION_CHAT_PREFER_ANTHROPIC=1 flips OpenAI/Anthropic order when both are set.
23 # ANTHROPIC_API_KEY=
24 # ANTHROPIC_CHAT_MODEL=claude-3-5-haiku-20241022
25 # KNOWTATION_CHAT_PREFER_ANTHROPIC=1
26 # DEEPINFRA_API_KEY=
27 # DEEPINFRA_CHAT_MODEL=Qwen/Qwen2.5-72B-Instruct # default; cheaper hint model: meta-llama/Meta-Llama-3.1-8B-Instruct
28 # KNOWTATION_CHAT_PROVIDER=deepinfra # explicit lock; omit for default OpenAI-first behavior
29 # VOYAGE_API_KEY= # when embedding.provider is voyage (see docs/setup.md)
30 # Hub (Phase 11): required for npm run hub (self-hosted). See docs/TWO-PATHS-HOSTED-AND-SELF-HOSTED.md#quick-start-self-hosted
31 # HUB_JWT_SECRET=your-long-random-secret
32 # KNOWTATION_VAULT_PATH=/absolute/path/to/vault (or set in config/local.yaml)
33 #
34 # Gateway → canister authentication (required for production).
35 # Set a strong random secret (64+ hex chars), then call admin_set_gateway_auth_secret on the canister.
36 # CANISTER_AUTH_SECRET=
37 #
38 # Full operator export (all users; hub canister must have secret set — see docs/OPERATOR-BACKUP.md)
39 # KNOWTATION_OPERATOR_EXPORT_URL=https://<hub-canister-id>.icp0.io
40 # KNOWTATION_OPERATOR_EXPORT_KEY=long-random-secret-matching-admin_set_operator_export_secret
41 # KNOWTATION_OPERATOR_EXPORT_DIR=./backups
42 #
43 # Optional: before `dfx deploy hub --network ic`, `npm run canister:release-prep` can export vault(s) to ./backups/
44 # (same script as `npm run canister:export-backup` and scheduled HTTP vault export — see docs/DEPLOY-HOSTED.md §6)
45 # KNOWTATION_CANISTER_BACKUP_USER_ID=google:123
46 # KNOWTATION_CANISTER_URL=https://<canister-id>.icp0.io
47 # KNOWTATION_CANISTER_BACKUP_URL= # alias for CANISTER_URL (e.g. CI secret name)
48 # KNOWTATION_CANISTER_BACKUP_VAULT_ID=default
49 # KNOWTATION_CANISTER_BACKUP_VAULT_IDS=default,second # comma-separated; overrides VAULT_ID when set
50 # KNOWTATION_CANISTER_BACKUP_DIR=./backups
51 # KNOWTATION_CANISTER_BACKUP_ENCRYPT_KEY_HEX= # 64 hex chars → AES-256-GCM .json.enc output
52 # KNOWTATION_CANISTER_BACKUP_S3_BUCKET=
53 # KNOWTATION_CANISTER_BACKUP_S3_PREFIX=knowtation-canister-backups/
54 # KNOWTATION_CANISTER_BACKUP_SKIP_S3=1 # local: skip S3 even if bucket set
55 # AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION=us-east-1
56 #
57 # CLI / curl / repo scripts (verify-hosted-hub-api, seed:*, `knowtation propose`) read KNOWTATION_HUB_URL,
58 # KNOWTATION_HUB_TOKEN, KNOWTATION_HUB_VAULT_ID — not *_LOCAL / *_HOSTED. If you use suffixed names in .env,
59 # after `source .env` run exports, e.g. for hosted:
60 # export KNOWTATION_HUB_URL="$KNOWTATION_HUB_URL_HOSTED"
61 # export KNOWTATION_HUB_TOKEN="$KNOWTATION_HUB_TOKEN_HOSTED"
62 # export KNOWTATION_HUB_VAULT_ID="$KNOWTATION_HUB_VAULT_ID_HOSTED"
63 #
64 # Optional proposal LLM (exact names; env locks Settings → Backup checkboxes when set to 1/0 or true/false):
65 # KNOWTATION_HUB_PROPOSAL_REVIEW_HINTS=1
66 # KNOWTATION_HUB_PROPOSAL_ENRICH=1
67 #
68 # AIR Improvement D: built-in attestation endpoint (hosted gateway).
69 # When set (32+ chars), the gateway auto-configures KNOWTATION_AIR_ENDPOINT to its own
70 # /api/v1/attest route. All hosted note writes are then attested (HMAC-signed, stored in
71 # Netlify Blobs). Verify any attestation via GET /api/v1/attest/:id.
72 # ATTESTATION_SECRET=your-long-random-secret-min-32-chars
73 #
74 # Hosted memory consolidation (Session 10 / Stream 1 — bridge + gateway).
75 # CONSOLIDATION_LLM_API_KEY: LLM key for hosted consolidation passes; falls back to OPENAI_API_KEY.
76 # CONSOLIDATION_LLM_MODEL: Model to use (default: gpt-4o-mini).
77 # CONSOLIDATION_COST_CAP_USD: Optional daily spend cap per user on the bridge (no cap if unset).
78 # CONSOLIDATION_LLM_API_KEY=
79 # CONSOLIDATION_LLM_MODEL=gpt-4o-mini
80 # CONSOLIDATION_COST_CAP_USD=
File History 1 commit