Catalyst / admin/Syanpse-Vanguard 14.8 GB / 57.8 GB 40.0 GB free
Help Sign in

admin / Syanpse-Vanguard

public
Code Issues Pull requests Pipelines Packages Security Insights Wiki Settings
Syanpse-Vanguard / synapse-vanguard-v3 / sv / config.py 1662 B · main
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
"""Central configuration. All runtime knobs come from SV_* environment vars
(or a .env file). Every service role imports `settings` from here."""
from __future__ import annotations

from functools import lru_cache
from uuid import UUID

from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict

# Single-tenant default for the MVP scaffold. Multi-tenant onboarding lands later;
# every row already carries tenant_id so the schema does not have to change.
DEFAULT_TENANT_ID = UUID("00000000-0000-0000-0000-000000000001")


class Settings(BaseSettings):
    model_config = SettingsConfigDict(
        env_prefix="SV_", env_file=".env", extra="ignore"
    )

    log_level: str = "INFO"

    # Secrets
    vault_key: str = Field(default="00" * 32)  # 64 hex chars; override in prod
    jwt_secret: str = "dev-insecure-change-me"
    jwt_ttl_seconds: int = 3600

    # Storage
    storage_backend: str = "duckdb"
    duckdb_path: str = "./data/vanguard.duckdb"
    cold_dir: str = "./data/cold"
    clickhouse_dsn: str | None = None

    # Broker
    broker: str = "redis"  # redis | memory
    redis_url: str = "redis://localhost:6379/0"
    raw_stream: str = "stream:raw"
    raw_group: str = "normalizers"

    # Agent ingest / mTLS
    mtls_enabled: bool = True
    cert_dir: str = "./certs"
    enrollment_token: str = "dev-enrollment-token"

    # Bootstrap admin
    bootstrap_admin_user: str = "admin"
    bootstrap_admin_password: str = "admin"

    # Pipeline
    normalizer_batch: int = 500
    normalizer_block_ms: int = 2000


@lru_cache
def get_settings() -> Settings:
    return Settings()


settings = get_settings()