px workspace is one git repo holding a shared context vault plus one or more
ontologies. This page is the reference for the files that describe an ontology’s lineage.
Workspace anatomy
The manifests
prometheux.workspace.yaml
ontologies/<slug>/prometheux.yaml
Concept kinds
A concept is a body file (concepts/<predicate>.<ext>) plus, for most kinds, a
<predicate>.meta.yaml envelope. The body extension carries the language you authored —
don’t rename everything to .vadalog.
The .meta.yaml envelope
Bind a predicate in
binds.input only when it comes from a datasource. A predicate
produced by another concept is a derived edge — never bind it (see below).logic
Native Vadalog.customers.vadalog:
sql / cypher
Store the source query you wrote; the server transpiles it to Vadalog on apply, andpull recovers the source (not the transpiled form). revenue.sql:
.meta.yaml uses conceptType: sql (or cypher).
python
A Python script — a leaf node, never parsed as Vadalog.enrich.py plus a
enrich.meta.yaml with conceptType: python.
llm
A prompt template withllmConfig frontmatter and the prompt as the body.
summarize.llm.md:
context
A note selection — static (pin note paths) or dynamic (retrieve by query).relevant.context.yaml:
The derived graph
You never hand-write lineage edges. A concept’s Vadalog head/body predicates are the edges:customer and country_risk are produced by other concepts, px plan
reconstructs the edge customer → risk automatically. There is no binds.input entry
for them — only datasource-backed predicates get bound. Changing a concept’s rules
invalidates its results and cascades to everything downstream; plan renders that cascade
before you apply.
Datasources
Datasource specs live indatasources/*.yaml. Secrets are always ${ENV_VAR}
placeholders, resolved from the environment at apply and never written to files.
- Connection
- Local file
- Object store (S3)
Databases (postgres / mariadb / clickhouse / teradata / snowflake / …). Author one
table per file so the concept binds it unambiguously (a DB connect returns the whole group):
.meta.yaml (binds.input,
referencing the datasource name). A datasource already on the account is reused
(matched by type/host/port/table), not re-connected — so repeated applies never pile up
duplicate rows.
Ontology and apps
ontologySchema(ontology/schema.yaml) — an entity/edge graph in thesave_ontology_schemashape. The platform ontology view is drawn from concept lineage, so an ontology with a schema graph but no concepts renders empty;px validatewarns about this.apps/*.app.yaml— an AppDefinition v2. Appproject.idreferences are retargeted automatically when an ontology is recreated on another account.

