urienv-docker

DEPRECATED (2026-06-18): the Docker deployment now lives inside the urienv package at urienv/docker/. This repo is no longer maintained.

urisys-env-docker

Pełna, minimalna implementacja env:// dla urisys uruchamiana w Docker Compose.

Cel:

transport: HTTP /uri/call
komenda:   env://runtime/...
runtime:   urisys-edge
pack:      urienv
policy:    allowlist public vars + masked secrets + explicit secret gate

Uruchomienie

docker compose up --build urisys-env

Health:

curl http://127.0.0.1:8790/health

Lista tras:

curl http://127.0.0.1:8790/routes

Przykłady env://

Publiczna zmienna:

curl -X POST http://127.0.0.1:8790/uri/call \
  -H 'Content-Type: application/json' \
  -d '{
    "uri": "env://runtime/var/APP_NAME/query/value",
    "payload": {},
    "context": {}
  }'

Startup snapshot:

curl -X POST http://127.0.0.1:8790/uri/call \
  -H 'Content-Type: application/json' \
  -d '{"uri":"env://runtime/config/query/startup"}'

Sekret zamaskowany:

curl -X POST http://127.0.0.1:8790/uri/call \
  -H 'Content-Type: application/json' \
  -d '{"uri":"env://runtime/secret/SMTP_PASSWORD/query/masked"}'

Pełna wartość sekretu jest celowo zablokowana, nawet przy approved: true, o ile runtime nie ma allow_secret_read albo URISYS_ALLOW_SECRET_READ=1:

curl -X POST http://127.0.0.1:8790/uri/call \
  -H 'Content-Type: application/json' \
  -d '{
    "uri":"env://runtime/secret/SMTP_PASSWORD/query/value",
    "context":{"approved":true}
  }'

Mutacja zmiennej procesowej, tylko allowlistowana zmienna i tylko w aktualnym procesie:

curl -X POST http://127.0.0.1:8790/uri/call \
  -H 'Content-Type: application/json' \
  -d '{
    "uri":"env://runtime/var/FEATURE_FLAG_DEMO/command/set",
    "payload":{"value":"on"},
    "context":{"approved":true}
  }'

Test Docker e2e

./scripts/test-docker.sh

Test sprawdza:

Test lokalny bez Dockera

./scripts/local-test.sh

Pliki

packages/python/urienv/              # env:// pack
packages/python/`uricore` (`uri_control.edge`)/          # mały runtime urisys: call/serve/flow
vendor/uricore/                      # parser/registry/dispatcher/policy/event store
docker-compose.yml                   # pełny stack demo
docker/config/env-policy.yaml        # allowlist i policy env://
docker/env/urisys.env                # demo env_file
docker/secrets/*.txt                 # demo Docker secrets
flows/*.uri.flow.yaml                # flow przykładowe
markpacts/*.markpact.md              # kontrakt i implementacja Markpact

Zasada bezpieczeństwa

env:// nie powinno być zwykłym wrapperem na os.environ. Ten przykład stosuje trzy bramki:

  1. public_vars / public_prefixes — tylko one są czytelne jawnie.
  2. secret_vars / secret_prefixes — domyślnie tylko masked.
  3. Pełne sekrety wymagają approved=true oraz allow_secret_read=true albo URISYS_ALLOW_SECRET_READ=1.

W produkcji nie ustawiaj URISYS_ALLOW_SECRET_READ=1, chyba że uruchamiasz kontrolowany serwis wewnętrzny.

Ekosystem TellMesh

Orchestrator: urisys · Mapa: MESH.md · Model: ECOSYSTEM.md

Pole Wartość
Warstwa Docker glue
Scheme env://
Zależność uricore (uri_control)

Runtime edge: uri_control.edge w pakiecie uricore (legacy urisysedge usunięty 2026-06). Router intencji: urirouter (uri_router) — resolve + HTTP/MQTT delegate.