Pipeline Designer uses a dedicated Postgres role called visual_pipeline_user (VPU) to execute all pipeline operations against the AI Database (AIDB) extension. Understanding how VPU works is important because it directly affects what pipelines are visible in the Pipeline Designer, what tables pipelines can access, and how permissions must be configured.
What is VPU?
visual_pipeline_user is a Postgres role that you create manually as a prerequisite before using Pipeline Designer.
The role is not created automatically. See Getting started -Creating the VPU role for the setup steps.
The role has basic connectivity once created, but it does not have the grants needed to read your data or create pipeline objects. You must configure those permissions yourself (see Configuring VPU permissions).
Pipeline management operations (creating, updating, and deleting pipelines) run under this role - the agent opens a transaction and switches identity using SET LOCAL ROLE visual_pipeline_user.
Pipeline execution also runs as VPU, though the mechanism varies by processing mode (see Executing pipelines - Execution flow for details).
VPU exists for two reasons:
Privilege isolation. Pipeline SQL doesn't run with superuser or administrator privileges. If a pipeline operation triggers unexpected behavior in the AIDB extension, the blast radius is limited to what VPU is authorized to access.
Pipeline Designer visibility control. Pipeline Designer displays only the pipelines and knowledge bases owned by VPU. This separation keeps pipelines managed through Pipeline Designer distinct from those created through other means (SQL, scripts, third-party tools). Pipeline Designer doesn't attempt to manage pipelines it didn't create, avoiding potential conflicts with incompatible configurations.
For environment setup steps (extension installation, cluster configuration, platform roles, and source table grants), see Getting started.
How VPU affects visibility
When a pipeline is created through Pipeline Designer, AIDB stamps the pipeline's owner_role as visual_pipeline_user. The EDB Postgres AI agent periodically collects pipeline and knowledge base data from AIDB and filters for owner_role = 'visual_pipeline_user'. Only matching objects are reported to the Hybrid Manager (HM) control plane and displayed in the Pipeline Designer.
This has a direct consequence: pipelines and knowledge bases created outside Pipeline Designer aren't visible in Pipeline Designer. If you create a pipeline through SQL (for example, using psql as the edb_admin role), it will function correctly at the database level but won't appear in Pipeline Designer's pipeline list or knowledge base views.
There is no AIDB function to change a pipeline's owner_role after creation. If you need a SQL-created pipeline to appear in the Portal, you must create it while assuming the VPU role. Your Postgres role must have been granted VPU (GRANT visual_pipeline_user TO your_role) to perform the role switch:
-- SET LOCAL ROLE scopes the identity change to the current transaction. BEGIN; SET LOCAL ROLE visual_pipeline_user; SELECT aidb.create_pipeline(...); COMMIT;
Note
All pipelines created this way are stamped with owner_role = 'visual_pipeline_user', regardless of which user executed the SET LOCAL ROLE. There is no per-user attribution in the pipeline metadata. Use SET LOCAL ROLE (transaction-scoped) rather than SET ROLE (session-scoped) to avoid accidentally running subsequent SQL as VPU.
Configuring VPU permissions
VPU doesn't automatically have access to your data tables or the ability to create pipeline objects. The permissions VPU needs depend on the pipeline's processing mode, as described in the overview below. If any required permission is missing, pipeline creation or execution will fail with a permission error.
Required VPU permissions
Create destination tables. AIDB creates a destination table (named
pipeline_<name>) in the same schema as the source table. VPU needsCREATE ON SCHEMAfor that schema. This grant is required for every processing mode.Read source data and create processing triggers. The grant VPU needs to read the source table depends on the processing mode:
On Demand mode reads the source table but doesn't attach triggers. VPU only needs
SELECTon the source table:GRANT SELECT ON <schema>.<source_table> TO visual_pipeline_user;
Live and Background modes attach triggers to the source table so that new or updated rows are processed automatically. For these modes, VPU must be granted membership in the source table's owner role:
GRANT <source_table_owner_role> TO visual_pipeline_user;
This single grant gives VPU both the read access and the privileges needed to create and delete the processing triggers on the source table. Replace
<source_table_owner_role>with the role that owns the source table.Membership in the owner role is required rather than a narrower
TRIGGERgrant because Postgres lets only a table's owner drop triggers on it. TheTRIGGERprivilege allows creating triggers but not deleting them, so VPU would be unable to clean up its triggers when a pipeline is updated or deleted.
The subsections below show the exact GRANT statements for each topology.
Tables in the public schema
On Postgres 15 and later, CREATE on the public schema is no longer granted to PUBLIC by default. VPU therefore needs an explicit CREATE ON SCHEMA public grant regardless of whether the cluster is managed or self-managed. The aidb_users role grants access to AIDB extension objects but doesn't cover SELECT on user-created tables, schema-level CREATE, or the privileges needed to create and delete processing triggers. See Manage user access with the aidb_users role for how the role works outside of Pipeline Designer.
Connect to the database as an administrator and run the grants for your processing mode.
For On Demand mode:
GRANT SELECT ON public.<source_table> TO visual_pipeline_user; GRANT CREATE ON SCHEMA public TO visual_pipeline_user;
For Live and Background modes:
GRANT <source_table_owner_role> TO visual_pipeline_user; GRANT CREATE ON SCHEMA public TO visual_pipeline_user;
Replace <source_table> with the actual table name and <source_table_owner_role> with the role that owns the source table.
Tables in user-created schemas
For tables in custom schemas, you must grant VPU access explicitly. Connect to the database as an administrator and run the grants for your processing mode.
For On Demand mode: