Skip to content

Platform overview

DrToller.Platform is the deployment and operations layer for DrToller.Framework workloads. Product page: platform.drtoller.com. It does not contain step domain logic or framework orchestration code.

Framework needs an environment that can provide the runtime. Platform is that layer. How the environment is implemented is an operator choice.

The current reference is a self-hosted Compose environment, env templates, operator CLI, and thin integration entry points. That service list is a default, not the definition of Platform or of Framework.

Repo / package Role
DrToller.Framework (drtoller.framework) Runtime: DRTML compile, storage, processing, telemetry emit
DrToller.Edge OSS step pack (example): *.drtml + domain Python
DrToller.Platform Deployment environment: provisioning, wiring, lifecycle, health

License: Apache-2.0 (LICENSE / NOTICE). Secrets stay in gitignored .env — see Platform SECURITY.md.

The reference tree (Compose-based):

DrToller.Platform/
stack/ # docker-compose.yaml, env.example, bin/, postgres-init, nginx
ui/ # Streamlit app → framework integration/ui
airflow/dags/ # thin DAG wrappers → framework
grafana/ # datasource + dashboard provisioning
prometheus/ # scrape config (Ray SD, worker metrics)

Step manifests are discovered from stack/config/steps_roots.txt (mounted in containers as DRTOLLER_STEPS_ROOTS_FILE). Framework and UI read that list — platform does not hardcode step ids.

  • Environment: bootstrap, service wiring, secrets and host paths, lifecycle, health — bound to Framework contracts.
  • Deploy-time codegen (in the current reference): Grafana dashboard JSON sync, Postgres DDL from DRTML (migrate-postgres.sh).
  • Operator CLI (in the current reference): drtoller up, drtoller down, drtoller update, drtoller verify, drtoller install, drtoller k8s up, drtoller k8s down, drtoller ray attach, drtoller ray bake, … Host ray sync is debug-only; Streamlit runtime.parallelism.* patches the live RayCluster at task start.

Today’s Compose file includes Postgres, Redis, MinIO, Qdrant, Ray head, Prometheus, Grafana, Airflow (Celery), and Streamlit. Those names are implementation choices for this default. You may use the reference as shipped, change parts of it, or provide a different environment.

  • Step processors, registry plugins, spaCy parsing — step packages only.
  • Runtime metric emit, partition loop, storage session — framework only.
  • Hand-maintained Grafana JSON in git — dashboards are generated from DRTML (see Grafana sync).

Sibling checkout example:

/opt/DrToller.Framework
/opt/DrToller.Edge
/opt/DrToller.Platform
Terminal window
cd /opt/DrToller.Platform/stack
sudo bin/install-stack-cli.sh # once: symlinks in /usr/local/bin
cp env.example .env && nano .env
# set DRTOLLER_HOME to the parent of step checkouts (or edit compose mounts)
drtoller up
drtoller verify
./bin/day1-bootstrap.sh # once: Airflow connections + smoke table
# Optional multi-host Ray on existing DOKS (not AWS/GCP yet):
# export KUBECONFIG=~/.kube/….yaml
# # MINIO_API_BIND=<VPC IP> in .env
# drtoller cloud bootstrap --provider digitalocean --attach
# drtoller verify

Optional override: /etc/drtoller/stack.env with STACK_DIR=….

The reference Compose mounts code under ${DRTOLLER_HOME}/drtoller and ${DRTOLLER_HOME}/drtoller/platform — use matching directory names / symlinks or edit the volume paths. Details: Reference Compose environment.