Files
create/docs/src/guide/silo.md
forbes-0023 f8a6c130af
Some checks failed
Build and Test / build (pull_request) Has been cancelled
docs: update Silo_New references for schema-driven creation form
- COMPONENTS.md: describe schema-driven form with runtime API fetching
- silo.md: update command description with domain/subcategory picker,
  dynamic properties, live PN preview; add schema_form.py and
  silo_start.py to directory structure
- configuration.md: update keyboard shortcut description
2026-02-11 10:34:28 -06:00

7.0 KiB

Silo

Silo is an item database and part management system for Kindred Create. It provides revision-controlled storage for CAD files, configurable part number generation, BOM management, and team collaboration.

  • Submodule path: mods/silo/
  • Source: git.kindred-systems.com/kindred/silo-mod

Architecture

Silo has three components:

┌──────────────────────┐     ┌──────────────┐
│  FreeCAD Workbench   │────▶│  Go REST API  │
│  (Python commands)   │     │  (silod)      │
└──────────────────────┘     └──────┬───────┘
         │                          │
         │  silo-client             │
         │  (shared API lib)        │
         │                    ┌─────┴─────┐
         │                    │           │
         │               PostgreSQL    MinIO
         │               (metadata)  (files)
         │
    Local .FCStd files
  • Go REST API server (cmd/silod/) — 38+ routes, backed by PostgreSQL and MinIO
  • FreeCAD workbench (freecad/) — Python commands integrated into Kindred Create
  • Shared API client (silo-client/) — Python library used by the workbench (nested submodule)

The silo-mod repository was split from a monorepo into three repos: silo-client (shared Python API client), silo-mod (FreeCAD workbench), and silo-calc (LibreOffice Calc extension).

Workbench commands

Document lifecycle

Command Shortcut Description
Silo_New Ctrl+N Schema-driven item creation form — domain/subcategory picker, dynamic property fields loaded from the schema API, live part number preview, sourcing fields, and project tagging
Silo_Open Ctrl+O Search and open items — combined dialog querying both the database and local files
Silo_Save Ctrl+S Save locally to canonical path, collect document properties, upload to MinIO as auto-revision
Silo_Commit Ctrl+Shift+S Save as a new revision with a user-provided comment
Silo_Pull Download from MinIO with revision selection, conflict detection, and progress tracking
Silo_Push Batch upload — finds local files not yet synced to the server, compares timestamps

Information and management

Command Description
Silo_Info Show item metadata, project tags, and revision history table with status and labels
Silo_BOM Two-tab view: BOM (children) and Where Used (parents). Add, edit, remove entries with quantity and unit tracking
Silo_TagProjects Multi-select dialog for assigning project tags to items
Silo_Rollback Select a previous revision and create a new revision from that point with optional comment
Silo_SetStatus Change revision lifecycle status: draft → review → released → obsolete

Administration

Command Description
Silo_Settings Full settings UI — API URL, SSL verify, custom CA cert, API token management, authentication status
Silo_Auth Session-based login: /login/api/auth/me/api/auth/tokens; stores API token in preferences
Silo_ToggleMode Switch between Silo workbench and other workbenches (menu only)

Origin integration

Silo registers as a file origin via the FileOrigin interface in src/Gui/. The SiloOrigin class in silo_origin.py implements:

Capability Value
id "silo"
name "Kindred Silo"
type PLM (1)
tracksExternally true
requiresAuthentication true
supportsRevisions true
supportsBOM true
supportsPartNumbers true
supportsAssemblies true

The origin delegates to the workbench commands for all operations (new, open, save, commit, pull, push, info, BOM). Registration happens via a deferred QTimer (1500ms after startup) in src/Mod/Create/InitGui.py.

Configuration

FreeCAD parameters

Stored in User parameter:BaseApp/Preferences/Mod/KindredSilo:

Parameter Type Default Description
ApiUrl String (empty) Silo server URL
SslVerify Bool true Verify SSL certificates
CaCertPath String (empty) Path to custom CA certificate
ApiToken String (empty) Stored authentication token
FirstStartChecked Bool false Whether first-start prompt has been shown
ProjectsDir String ~/projects Local directory for checked-out files

Environment variables

Variable Default Description
SILO_API_URL http://localhost:8080/api Override for server API endpoint
SILO_PROJECTS_DIR ~/projects Override for local projects directory

Server

The Silo server is documented in detail in the Silo Server section:

Directory structure

mods/silo/
├── cmd/
│   ├── silo/                  # CLI tool
│   └── silod/                 # API server
├── internal/
│   ├── api/                   # HTTP handlers, routes, templates
│   ├── config/                # Configuration loading
│   ├── db/                    # PostgreSQL access
│   ├── migration/             # Property migration utilities
│   ├── partnum/               # Part number generation
│   ├── schema/                # YAML schema parsing
│   └── storage/               # MinIO file storage
├── freecad/
│   ├── InitGui.py             # SiloWorkbench registration
│   ├── schema_form.py         # Schema-driven item creation dialog (SchemaFormDialog)
│   ├── silo_commands.py       # 14 commands + dock widgets
│   ├── silo_origin.py         # FileOrigin backend
│   ├── silo_start.py          # Native start panel (database items, activity feed)
│   └── resources/icons/       # 10 silo-*.svg icons
├── silo-client/               # Shared Python API client (nested submodule)
│   └── silo_client/
│       ├── client.py          # SiloClient HTTP wrapper
│       └── settings.py        # SiloSettings config management
├── migrations/                # 10 numbered SQL scripts
├── schemas/                   # Part numbering YAML schemas
└── deployments/               # Docker Compose + systemd configs

Further reading

  • mods/silo/README.md — server quickstart and CLI usage
  • mods/silo/ROADMAP.md — strategic roadmap (6 phases, Q2 2026 → Q4 2027)