mirror of
https://github.com/BaaRai/ARTEX.git
synced 2026-11-14 20:20:54 +08:00
Seal the four credential columns with AES-256-GCM (random nonce per value,
AAD "<table>.<column>"): llm_profiles.api_key and task_credentials.password
store "enc:v1:<base64(nonce||ciphertext)>"; mcp_servers.env and
notification_channels.config store {"__artex_enc":"enc:v1:..."} over the
canonical JSON. The db layer encrypts on write and decrypts on read, so agent
tools (LLM provider, MCP, notifier, test credentials) get plaintext
server-side. Decryption failure is an error, never a plaintext fallback.
Key: ARTEX_SECRET_KEY (32 bytes, base64 or hex) or keys/secret.key next to
jwt.key, generated with crypto/rand at first start (0600). Startup refuses
when encrypted values exist and no key is available, and when the key does
not decrypt them. An idempotent backfill under the schema advisory lock
encrypts legacy plaintext rows and logs only a count.
API: MCP env is masked on read and masked placeholders on write keep the
stored value; task credential passwords are masked server-side and a masked
password on write is refused. ARTEX_SECRET_KEY is scrubbed from the process
environment with the other startup secrets.
55 lines
2.8 KiB
Bash
55 lines
2.8 KiB
Bash
# Docker deployment configuration (copy to .env)
|
|
# The image is built locally by `docker compose build`; there is no registry tag.
|
|
# Address the web UI is published on. 127.0.0.1 keeps it host-local; set 0.0.0.0
|
|
# to reach it from another machine or from Windows when ARTEX runs inside WSL.
|
|
ARTEX_BIND_ADDR=127.0.0.1
|
|
# Reverse proxies (comma-separated CIDRs) whose X-Forwarded-For the login rate
|
|
# limit trusts. Empty: the header is ignored. See "Reverse proxy deployment" in README.md.
|
|
ARTEX_TRUSTED_PROXIES=
|
|
# Optional key for the secrets encrypted in the database (32 bytes, base64 or hex,
|
|
# e.g. `openssl rand -base64 32`). Empty: keys/secret.key, generated at first start.
|
|
# Set it when ./keys is not persistent. Losing the key loses the stored secrets.
|
|
# ARTEX_SECRET_KEY=
|
|
POSTGRES_USER=artex
|
|
POSTGRES_PASSWORD=change-me-please
|
|
POSTGRES_DB=artex
|
|
|
|
# LLM (fill one or both; you can also leave empty and configure in the UI)
|
|
ANTHROPIC_API_KEY=
|
|
OPENAI_API_KEY=
|
|
ARTEX_LLM_PROVIDER=
|
|
ARTEX_LLM_MODEL=
|
|
ARTEX_LLM_BASE_URL=
|
|
ARTEX_LLM_PROXY=
|
|
|
|
# Untrusted-output boundary. Frames every tool output between nonce-tagged markers so
|
|
# the model treats it as data, not instructions. On by default (unset or empty = on);
|
|
# set ARTEX_UNTRUSTED_BOUNDARY=0 (or false/off/no) to disable it. Measured cost: about
|
|
# 154 bytes per tool result plus one system note.
|
|
# ARTEX_UNTRUSTED_BOUNDARY=0
|
|
|
|
# Noise profile of the requests ARTEX sends to targets (WebFetch, http custom tools, enrich
|
|
# probe). Default off: no limit, requests unchanged. quiet = 2 req/s per host, burst 4,
|
|
# 1 in flight; balanced = 5 req/s, burst 10, 2 in flight; aggressive = 20 req/s, burst 40,
|
|
# 4 in flight. A profile also adds jitter, backs off on 429/503 and merges identical GETs
|
|
# of one task per tool (short cache; WebFetch is paced only). Bash-launched tools are not throttled.
|
|
# ARTEX_NOISE_PROFILE=balanced
|
|
# User-Agent set on target requests that have none, only under a profile. Empty = unchanged.
|
|
# ARTEX_TARGET_USER_AGENT=
|
|
|
|
# Run budgets (optional). Unset or 0 = unlimited, nothing changes. TASK_* caps a whole task
|
|
# (planner rounds and all its workers); INTENT_* caps one worker run. Kept in memory: a
|
|
# restart, or a revive of a finished task, starts a fresh budget.
|
|
# Below 50000 tokens a task gets no worker at all (one worker costs about 50000 tokens by
|
|
# default); from 50000 to about 70000 it typically gets one worker, then the forced wrap-up. Use a
|
|
# budget well above 70000 for real exploration.
|
|
# ARTEX_TASK_BUDGET_TOKENS=
|
|
# ARTEX_TASK_BUDGET_TURNS=
|
|
# ARTEX_INTENT_BUDGET_TOKENS=
|
|
# ARTEX_INTENT_BUDGET_TURNS=
|
|
|
|
# Update banner (optional). ARTEX_UPDATE_CHECK=1 lets the backend check the public GitHub
|
|
# releases API for a newer ARTEX release at most once per 24 h and show a dismissible banner.
|
|
# Off by default: unset, no update request is made.
|
|
# ARTEX_UPDATE_CHECK=1
|