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

# 10.3 project

# Project API Reference

The `Project` class is the root container of a BindAI solution.

A project owns applications, workflows, shared tools, schedulers, configuration, and future shared resources such as knowledge and memory.

This page documents the public Project API.

***

# Overview

Every BindAI solution begins with a project.

Conceptually:

```text id="api-project-1" theme={null}
Project

├── Applications

├── Workflows

├── Shared Tools

├── Scheduler

├── Knowledge

└── Memory
```

The project acts as the central coordination point for all components.

***

# Creating a Project

Projects are typically created through a configuration or builder.

Example:

```python id="api-project-2" theme={null}
project = Project(
    configuration,
)
```

Or:

```python id="api-project-3" theme={null}
builder = ProjectBuilder()

project = builder.build()
```

***

# Configuration

Every project contains a `ProjectConfiguration`.

The configuration defines project-wide settings such as:

* project name
* environment
* shared configuration
* runtime settings

The configuration is available through:

```python id="api-project-4" theme={null}
project.configuration
```

***

# Properties

## name

Returns the configured project name.

Example:

```python id="api-project-5" theme={null}
project.name
```

***

## applications

Dictionary containing registered applications.

Conceptually:

```text id="api-project-6" theme={null}
Project

↓

Applications

↓

Application Objects
```

***

## tools

The shared tool registry.

```text id="api-project-7" theme={null}
Project

↓

Tool Registry
```

Every registered application can access these tools.

***

## workflows

The workflow registry.

```text id="api-project-8" theme={null}
Project

↓

Workflow Registry
```

Registered workflows may be executed manually or through the scheduler.

***

## scheduler

Provides scheduled workflow execution.

```text id="api-project-9" theme={null}
Project

↓

Scheduler

↓

Scheduled Workflows
```

***

# Application Methods

## add\_application()

Registers an application.

Example:

```python id="api-project-10" theme={null}
project.add_application(
    application,
)
```

Returns the project instance for fluent chaining.

***

## application()

Returns a registered application.

Example:

```python id="api-project-11" theme={null}
app = project.application(
    "support",
)
```

***

# Tool Methods

## add\_tool()

Registers a shared tool.

Example:

```python id="api-project-12" theme={null}
project.add_tool(
    search_tool,
)
```

After registration, every application in the project may use the tool.

***

# Workflow Methods

## add\_workflow()

Registers a workflow.

Example:

```python id="api-project-13" theme={null}
project.add_workflow(
    workflow,
)
```

***

## workflow()

Returns a workflow from the registry.

Example:

```python id="api-project-14" theme={null}
workflow = project.workflow(
    workflow_id,
)
```

***

# Scheduler Methods

## add\_schedule()

Registers a workflow schedule.

Example:

```python id="api-project-15" theme={null}
project.add_schedule(
    schedule,
)
```

The scheduler later determines when the workflow should execute.

***

# Execution Methods

## run()

Executes an agent through an application.

Example:

```python id="api-project-16" theme={null}
result = project.run(
    application="support",
    agent="assistant",
    message="Hello",
)
```

This is the primary synchronous execution method.

***

## stream()

Streams an agent response.

Example:

```python id="api-project-17" theme={null}
for chunk in project.stream(
    application="support",
    agent="assistant",
    message="Explain AI",
):
    print(chunk)
```

Streaming is recommended for conversational user interfaces.

***

# Shared Resources

The project is designed to support shared resources.

Examples include:

```text id="api-project-18" theme={null}
Knowledge

Memory

Secrets
```

These resources can be accessed by applications and workflows as the project evolves.

***

# Python Helpers

Projects implement several convenience methods.

## Membership

```python id="api-project-19" theme={null}
"support" in project
```

Returns whether an application is registered.

***

## Length

```python id="api-project-20" theme={null}
len(project)
```

Returns the number of registered applications.

***

## Iteration

Projects are iterable.

Example:

```python id="api-project-21" theme={null}
for application in project:
    ...
```

This iterates over every registered application.

***

# Typical Lifecycle

A typical project lifecycle is:

```text id="api-project-22" theme={null}
Create Project

↓

Register Applications

↓

Register Tools

↓

Register Workflows

↓

Execute
```

This keeps initialization centralized and predictable.

***

# Best Practices

* Create one project for each AI solution.
* Register reusable tools at the project level.
* Keep applications focused on a single business domain.
* Register workflows centrally.
* Store shared configuration inside the project.
* Use the scheduler for recurring workflow execution.
* Separate project infrastructure from application logic.

***

# Related APIs

The Project API works closely with:

* Application
* Agent
* Workflow
* Tool
* Scheduler

These APIs together define the overall BindAI architecture.

***

# Summary

The `Project` class is the top-level container in BindAI.

It coordinates applications, workflows, shared tools, scheduling, and configuration, providing a single entry point for executing and managing complete AI solutions.
