Projects and Workspaces
The Aurite framework uses a powerful hierarchical configuration system built on two core concepts: Projects and Workspaces. This system is driven by a special anchor file named .aurite, which tells the framework how to discover and prioritize configurations.
The .aurite Anchor File
The framework finds configurations by searching upwards from your current directory for .aurite files. This file marks a directory as a Project or a Workspace root and specifies which subdirectories contain configuration files.
Configuration Contexts
Your configurations are organized into contexts, allowing for both separation of concerns and sharing of common components.
A Project is a self-contained directory for a specific task or set of related tasks. It's the most common organizational unit.
To define a project, create an .aurite file in its root directory.
.aurite File Fields:
| Field | Type | Required | Description |
|---|---|---|---|
type |
string |
Yes | Must be set to "project". |
include_configs |
list[string] |
Yes | A list of directories (relative to the .aurite file) where component configurations are stored. |
Example .aurite:
A Workspace is a higher-level container that can manage multiple projects and shared configurations.
.aurite File Fields:
| Field | Type | Required | Description |
|---|---|---|---|
type |
string |
Yes | Must be set to "workspace". |
include_configs |
list[string] |
Yes | A list of directories containing shared, workspace-level configurations. |
projects |
list[string] |
No | An optional list of subdirectories that are individual projects. |
Example .aurite:
Priority Resolution
When the framework looks for a component, it searches contexts in a specific order. A component found in a higher-priority context overrides one with the same name from a lower-priority context.
The priority is as follows, from highest to lowest:
- In-Memory: Programmatically registered components (highest priority).
- Project Level: Configurations from the current project's
include_configsdirectories. - Workspace Level: Configurations from the parent workspace's
include_configsdirectories. - Other Projects: Configurations from other projects within the same workspace.
Overriding Example
You could define a standard-llm at the workspace level, and a standard-llm at the project level. The framework automatically picks the most specific one based on your current directory.
Path Resolution
When a component configuration references a local file (e.g., server_path in an MCP server), you can use a relative path.
All relative paths are resolved from the location of the .aurite file that defines their context.
This makes your configurations portable and easy to share.
Path Resolution Example
Imagine the following setup:
- Your workspace is at
/path/to/my-workspace/. - Its
.auritefile is at/path/to/my-workspace/.aurite. - A shared server is defined in
/path/to/my-workspace/workspace-config/servers.json. - The server's
server_pathis set tomcp_servers/shared_server.py.
The framework will correctly resolve the full path to /path/to/my-workspace/mcp_servers/shared_server.py.
Component Types
Aurite supports several core component types, each with its own configuration and purpose. Learn more about each type:
Explore these guides to understand how to configure and use each component within your projects and workspaces.