Skip to content

Building Blocks

Chinilla uses 7 universal building blocks. They work for any domain: software, restaurants, hospitals, factories, logistics. No infrastructure jargon required.

BlockIconDescription
PersonUserSomeone involved in the system
StepCogSomething that happens (a process, task, or action)
StorageDatabaseWhere things are kept (data, inventory, files)
DecisionGitBranchA fork in the road (routing, branching, rules)
TriggerZapWhat kicks things off (events, signals, arrivals)
ToolWrenchOutside help or resource (APIs, services, instruments)
ChannelArrowLeftRightHow things connect (queues, buses, protocols)

These blocks map to anything. A “Step” can be a microservice, a kitchen station, or an assembly line stage. A “Person” can be a user, a nurse, or a delivery driver. The AI handles the domain-specific details when you describe your system.

Every component supports:

  • Name - Display label on the canvas
  • Description - Hover card detail text
  • Metrics - Throughput (req/s), capacity, processing time (ms)
  • Requirements - Framework, language, runtime, OS, hardware, dependencies
  • Cost - Monthly and setup cost estimates
  • Infrastructure - Protocol (HTTP, gRPC, WebSocket, AMQP, Kafka, TCP, UDP, GraphQL, MQTT) and scaling config (min instances, max instances, scale trigger expression)
  • Behavior - Programmable processing mode (see Behaviors)
  • Subsystem - Drill into a component as its own nested system

The Infrastructure section lets you define how a component communicates and scales.

Protocol sets the primary communication protocol for the component. This affects AI code generation (appropriate client libraries) and the deterministic Python export (protocol-aware imports).

ProtocolTypical use
HTTPREST APIs, web services
gRPCInternal microservice RPC
WebSocketReal-time bidirectional streams
AMQPMessage broker integration (RabbitMQ)
KafkaEvent streaming
TCP / UDPLow-level network services
GraphQLQuery-based APIs
MQTTIoT device messaging

Scaling defines instance boundaries and autoscale triggers:

  • Min instances - Minimum replica count (baseline capacity)
  • Max instances - Maximum replica count (scale ceiling)
  • Scale trigger - Expression that triggers scaling (e.g. cpu > 80%, queue.depth > 100)

When a component has maxInstances > 1, the Python export generates a ThreadPoolExecutor pool sized to maxInstances and the AI code generator uses concurrency patterns like thread pools or multiprocessing.