Projects and Files
Projects and files organize your Cerulion work. A project is a container for related graphs, schemas, and node code. Understanding the project structure helps you organize your work and collaborate effectively.What is a Project?
A project is a workspace that contains:- Graphs - Visual designs of your data pipelines
- Schemas - Data type definitions
- Node Code - Implementation files (Rust, Python, C++)
- Configuration - Build and runtime settings
Projects are self-contained. Each project has its own schemas, nodes, and graphs. You can share projects by copying the project folder.
Why Organize with Projects?
Separation of Concerns
Keep different systems in separate projects. Each project is independent.
Reusability
Share schemas and nodes across graphs within a project. Reuse components easily.
Version Control
Each project is a natural unit for version control. Track changes per project.
Collaboration
Share entire projects with team members. Everything needed is in one place.
Project Structure
A typical project has this structure:Schemas Directory
Contains schema definition files (.yaml):
- One file per domain - Group related schemas together
- Reusable across graphs - All graphs in the project can use these schemas
- Version controlled - Track schema changes over time
Nodes Directory
Contains node implementation files:- Rust files (
.rs) - Rust node implementations - Python files (
.py) - Python node implementations - C++ files (
.cpp,.hpp) - C++ node implementations - One file per node - Each node has its own implementation file
Graphs Directory
Contains graph definition files (.graph):
- Visual designs - Saved graph layouts and connections
- Multiple graphs - One project can have many graphs
- Independent - Each graph can run separately
Config Directory
Contains configuration files:- Build settings - Compiler flags, dependencies
- Runtime settings - Execution parameters
- Environment configs - Different configs for dev/staging/prod
Creating a Project
1
Open Graph Editor
Launch Cerulion Graph Editor.
2
Create new project
Click File → New Project (or press
Ctrl+N / Cmd+N).3
Choose project location
Select where to create the project:
- Default location - Projects folder in your home directory
- Custom location - Choose any folder on your system
4
Name your project
Enter a descriptive project name:
- Use lowercase letters and underscores
- Be descriptive:
temperature-monitoringnotproject1 - Avoid spaces and special characters
The project folder should be created with the basic structure (schemas/, nodes/, graphs/, config/).
Working with Files
Schema Files
Schema files are YAML files in theschemas/ directory:
- One file per domain (e.g.,
sensors.yaml,geometry.yaml) - Use descriptive file names
- Group related schemas together
Node Files
Node files contain your implementation code: Rust node:- One file per node
- Use descriptive file names matching node names
- Follow language-specific conventions
Graph Files
Graph files (.graph) are saved automatically when you save your project. They contain:
- Node positions and connections
- Port configurations
- Trigger settings
- Visual layout
Graph files are in a binary or JSON format. You typically don’t edit them manually—use the Graph Editor instead.
Opening Existing Projects
1
Open project dialog
Click File → Open Project (or press
Ctrl+O / Cmd+O).2
Navigate to project
Browse to the project folder and select it.
The editor should load the project, showing graphs in the left sidebar.
3
Select a graph
Click on a graph in the sidebar to open it on the canvas.
Project Best Practices
Descriptive Names
Use clear, descriptive project names. “robot-control-system” is better than “project1”.
Organize by Domain
Group related schemas in the same file. Keep nodes organized by functionality.
Version Control
Use Git (or similar) to track project changes. Commit schemas, nodes, and graphs.
Documentation
Add a README.md to explain what the project does and how to use it.
Sharing Projects
To share a project with others:- Copy the project folder - All files are in one directory
- Share via Git - Push to a repository, others can clone
- Zip and send - Compress the folder and share
Projects are self-contained. As long as recipients have Cerulion Graph Editor installed, they can open and run your project.
Dependencies
If your project uses external dependencies:- Document them - List in README.md
- Include versions - Specify exact versions for reproducibility
- Provide setup instructions - Help others get dependencies installed
Project Templates
You can create project templates for common patterns:- Create a project with common schemas and nodes
- Save it as a template
- Use it as a starting point for new projects
Troubleshooting Projects
Project won't open
Project won't open
Problem: Can’t open an existing project.Solutions:
- Verify the project folder exists and is accessible
- Check file permissions (read access required)
- Look for corrupted graph files (try opening individual graphs)
- Check the console for error messages
Missing files
Missing files
Problem: Project opens but files are missing.Solutions:
- Check that all project files are in the correct directories
- Verify file names match what the project expects
- Look for files in wrong locations (check all subdirectories)
- Restore from backup or version control if available
Schema not found
Schema not found
Problem: Graph references a schema that doesn’t exist.Solutions:
- Check that schema file exists in
schemas/directory - Verify schema name matches exactly (case-sensitive)
- Ensure schema file is valid YAML
- Reload the project to refresh schema cache