Solutions¶
A solution is the top-level container in the Solution Builder. It groups related components into a single versioned, deployable unit that solves a specific business problem.
Creating a Solution¶
Every solution starts with a name, description, and a Mermaid diagram that describes the system architecture. The platform uses the diagram to auto-generate a component skeleton.
Coming Soon
The Python SDK for local development is not yet publicly available.
from flow_sdk.cli_client import CLIClient
client = CLIClient(config)
solution = client.solutions.create({
"name": "Customer Support Automation",
"description": "AI-powered ticket triage and response system",
"mermaid_source": """
graph TD
Classifier["Ticket Classifier Agent"]
Router["Routing Workflow"]
Responder["Response Agent"]
KB["Knowledge Base Tool"]
Classifier --> Router
Router --> Responder
Responder --> KB
""",
"visibility_level": "workspace",
})
print(f"Solution created: {solution.id} (v{solution.version})")
Navigate to Solutions > New. Enter a name, description, and visibility level. Paste your Mermaid diagram into the architecture editor. Click Create.
Solution Structure¶
A solution contains metadata and a list of components:
{
"id": "a1b2c3d4-...",
"slug": "customer-support-automation",
"version": "0.1.0",
"name": "Customer Support Automation",
"description": "AI-powered ticket triage and response system",
"mermaid_source": "graph TD\n ...",
"status": "draft",
"visibility_level": "workspace",
"component_count": 4,
"completed_count": 0
}
Key Fields¶
| Field | Description |
|---|---|
slug |
URL-safe identifier that groups all versions of a solution together |
version |
Semantic version (major.minor.patch) starting at 0.1.0 |
status |
Lifecycle status: draft, in_progress, completed, archived |
visibility_level |
Access scope: private, workspace, organization, marketplace |
mermaid_source |
The Mermaid flowchart that defines the solution architecture |
component_count |
Total number of components in the skeleton |
completed_count |
Number of components that have been fully configured |
Solution Lifecycle¶
Solutions move through a defined lifecycle from creation to deployment:
stateDiagram-v2
[*] --> Draft: Create solution
Draft --> InProgress: Start building
InProgress --> Completed: All components done
Completed --> Archived: Archive
InProgress --> Draft: Reset
Completed --> InProgress: Revise
Draft: draft
InProgress: in_progress
Completed: completed
Archived: archived
| Status | Meaning |
|---|---|
draft |
Solution created, skeleton may or may not be generated |
in_progress |
Actively building -- at least one component is being worked on |
completed |
All components have been configured and are ready |
archived |
Solution is retired and no longer active |
Versioning¶
Solutions use semantic versioning (major.minor.patch). Creating a new version copies the solution and its component skeleton, allowing you to iterate without affecting the previous version.
Coming Soon
The Python SDK for local development is not yet publicly available.
new_version = client.solutions.create_version(solution.id, {
"version_increment": "minor", # "major", "minor", or "patch"
"mermaid_source": updated_mermaid, # Optional: update the diagram
})
print(f"New version: {new_version.version}") # e.g., "0.2.0"
Version Increment Rules¶
| Increment | When to Use | Example |
|---|---|---|
patch |
Bug fixes, minor config tweaks | 0.1.0 -> 0.1.1 |
minor |
New components, feature additions | 0.1.0 -> 0.2.0 |
major |
Breaking changes, architecture redesign | 0.1.0 -> 1.0.0 |
Versions share a slug
All versions of a solution share the same slug. This makes it easy to query the full version history of a solution and compare changes across versions.
Component Skeleton¶
When you create a solution with a Mermaid diagram, the platform generates a component skeleton -- a structured plan of every component that needs to be built.
Each skeleton entry includes:
| Field | Description |
|---|---|
component_type |
Inferred type (agent, workflow, codeblock, tool, etc.) |
node_id |
The node identifier from the Mermaid diagram |
node_label |
The display label from the Mermaid diagram |
inferred_description |
AI-generated description of what this component should do |
inferred_dependencies |
List of other node IDs this component depends on |
creation_order |
Recommended build order (topologically sorted) |
status |
Component status: pending, in_progress, completed, skipped |
Regenerating the Skeleton¶
If you update the Mermaid diagram, you can regenerate the skeleton:
Coming Soon
The Python SDK for local development is not yet publicly available.
# Add new nodes, keep completed components
client.solutions.regenerate_skeleton(solution.id, mode="add_new")
# Or start fresh
client.solutions.regenerate_skeleton(solution.id, mode="clear_and_rebuild")
Clear and rebuild
The clear_and_rebuild mode removes all existing skeleton entries, including completed ones. Use add_new if you want to preserve work already done.
Visibility Levels¶
Solutions support four visibility levels that control who can discover and use them:
| Level | Access |
|---|---|
private |
Only the owner can see and edit |
workspace |
All members of the workspace |
organization |
All members of the organization |
marketplace |
Published to the marketplace for cross-organization sharing |
Deploying Solutions¶
Once a solution is completed, deploy it through deployment rings. The platform packages all linked components and manages the deployment lifecycle.
Before deleting a solution, a preflight check verifies that no components have blocking external references. In the UI, click Action menu > Delete on any solution to see the preflight check with affected components listed before you confirm.
To review a solution's history programmatically:
Coming Soon
The Python SDK for local development is not yet publicly available.
history = client.solutions.get_history(solution.id)
for entry in history.items:
print(f"v{entry.version} [{entry.status}] — {entry.component_count} components")
Managing Solutions¶
Listing Solutions¶
Coming Soon
The Python SDK for local development is not yet publicly available.
solutions = client.solutions.list(page=1, page_size=20)
for s in solutions.items:
print(f"{s.name} v{s.version} [{s.status}] — {s.completed_count}/{s.component_count} components")
Updating a Solution¶
Coming Soon
The Python SDK for local development is not yet publicly available.
client.solutions.update(solution.id, {
"name": "Customer Support Automation v2",
"status": "in_progress",
})
Archiving a Solution¶
Coming Soon
The Python SDK for local development is not yet publicly available.