> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mainly.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflow Objects (WOBs)

> Workflow Objects

Workflow Objects (WOBs) are the core building blocks of the MainlyAI data model. They provide an ORM-style abstraction over the underlying database tables, which primarily consist of shared metadata tables and a set of workflow-specific tables such as `code`, `knowledge_object`, `compute_resource_groups`, and `project`.

Each WOB is exposed to the user as a database view that enforces access control based on information stored in ACL tables. Modifications to a WOB are performed via stored procedures that execute in a privileged context, governed by the same ACL rules. This database interface is then wrapped in a corresponding Python object—such as `Code_block`, `Knowledge_object`, `Model`, or `Project`—which serves as the primary API for interacting with the object.

## Edges

All WOBs are connected in graphs via an edge table (edges). Users interact with these connections through the `v_edges` view, and WOBs can be linked or unlinked using the MainlyAI functions `miranda.link()` and `miranda.unlink()`.

| Color  | Data types         | Flow direction | Use case                                                                                                                                                                                                         |
| :----- | :----------------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Red    | String, number     | Forward        | Used for prompts, settings, text, code                                                                                                                                                                           |
| Green  | JSON or dicts      | Forward        | Program state, objects that change forward                                                                                                                                                                       |
| Blue   | Dataset, DataFrame | Forward        | Relational data that change forward                                                                                                                                                                              |
| Purple | API, ML models     | Backwards      | The leaf nodes of a purple branch is a subprogram that has its own state and it can receive and propagate information. Note that all objects are passed by reference which is important in concurrent execution. |
