Plan 4 Phase A scaffolding. void-workers package at /workers/, sibling of /lib/. pyproject.toml pins Python 3.12 with separate extras for pdf / image / video / test. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
27 lines
974 B
Python
27 lines
974 B
Python
import os
|
|
|
|
def env(name, default=None, required=False):
|
|
v = os.environ.get(name, default)
|
|
if required and v is None:
|
|
raise RuntimeError(f"env {name} is required")
|
|
return v
|
|
|
|
def env_int(name, default):
|
|
return int(os.environ.get(name, default))
|
|
|
|
DATABASE_URL = env("DATABASE_URL", required=True)
|
|
BLOB_ROOT = env("BLOB_ROOT", "/var/lib/void/blobs")
|
|
WHISPER_MODEL = env("WHISPER_MODEL", "small.en")
|
|
WHISPER_CACHE = env("WHISPER_CACHE", "/var/lib/void/whisper-models")
|
|
ALLOW_PRIVATE = env("VOID_INGEST_ALLOW_PRIVATE", "false") == "true"
|
|
|
|
CONCURRENCY = {
|
|
"extract.pdf": env_int("VOID_CONCURRENCY_EXTRACT_PDF", 2),
|
|
"extract.image": env_int("VOID_CONCURRENCY_EXTRACT_IMAGE", 2),
|
|
"ingest.video": env_int("VOID_CONCURRENCY_INGEST_VIDEO", 1),
|
|
"sync.source_doc": env_int("VOID_CONCURRENCY_SYNC_SOURCE_DOC", 1),
|
|
"echo": env_int("VOID_CONCURRENCY_ECHO", 1),
|
|
}
|
|
|
|
POLL_INTERVAL_MS = env_int("VOID_POLL_INTERVAL_MS", 1000)
|