Skip to content

Building Blocks

Chinilla uses 7 blocks to build anything: software, restaurants, hospitals, factories, supply chains. Same 7 blocks, no jargon.

BlockDefault iconWhat it is
PersonUserSomeone involved (user, customer, worker)
StepCogSomething that happens (cook, validate, ship)
StorageDatabaseA place things live (database, fridge, inventory)
DecisionGitBranchA fork in the road (approved? in stock?)
TriggerZapSomething that kicks off the flow (timer, new order, alarm)
ToolWrenchOutside help (Stripe, oven, an email service)
ChannelArrowLeftRightHow things move between blocks (email, API call, in person)

These map to whatever you’re designing. A “Step” can be a service, a kitchen station, or one stage of an assembly line. A “Person” can be a user, a nurse, or a driver. The AI fills in the domain-specific details when you describe what you’re building.

Icons are just decoration. Each block has a default icon, but you can swap it for any from the library — coffee cup, squirrel, lightbulb, anything that fits. Click Custom in the icon picker to browse 120+ icons across 12 categories. The icon doesn’t change how the block runs; that’s the Behavior and the numbers on the Simulate tab.

Every block has these:

  • Name — what shows on the canvas.
  • Description — text that pops up when you hover.
  • Numbers — rate, capacity, time per item (see below).
  • Requirements — framework, language, runtime, OS, hardware, dependencies.
  • Cost — monthly cost and setup cost.
  • Infrastructure — protocol (HTTP, gRPC, WebSocket, AMQP, Kafka, TCP, UDP, GraphQL, MQTT) and scaling (min instances, max instances, when to scale).
  • Behavior — how the block handles items (see Behaviors).
  • Subsystem — zoom inside the block to design what it contains.

These three numbers shape what the simulator does and what the AI suggests.

NumberWhat it meansExamples
Rate (per second)How many items the block handles per second at normal loadAPI: 500, Database: 1000, Human: 2
CapacityHow many items can be in flight or waiting at onceQueue: 100, Server: 50, Worker: 5
Time per itemHow long one item takes from start to finishCache hit: 5ms, API call: 200ms, ML guess: 2s, FPGA logic: 5ns, PCI hop: 2μs

The simulator uses these to push items through and figure out where things back up. The AI uses them too when it writes code (thread-pool sizes from capacity, time.sleep() from time per item).

How to think about each:

  • Rate is the steady speed. “How many per second does this handle when nothing’s broken?”
  • Capacity is the ceiling. “How many can be in flight before stuff queues up or drops?”
  • Time per item is the wait. “How long does one item take, beginning to end?”

Real-world examples:

BlockRateCapacityTime per item
Coffee register2 / sec1500ms
REST API500 / sec10050ms
Postgres database1000 / sec20010ms
ML prediction service20 / sec52000ms
Kafka queue10000 / sec5002ms
Human reviewer0.1 / sec110000ms

Tips:

  • Leave numbers at 0 if you don’t know yet. The AI can suggest values based on the block’s description.
  • Use round numbers to start (100 / sec, 50ms). Tune after a sim run.
  • Compare numbers across blocks to spot bottlenecks. If your API handles 500 / sec but your database only handles 100, the database is the bottleneck.

Time units. The simulator accepts any of these and converts them all to the same internal scale, so you can mix them freely on one canvas:

  • ps (picoseconds), ns (nanoseconds), μs / us (microseconds) — for hardware, FPGA, silicon designs
  • ms (milliseconds), s (seconds) — for software, services, networks
  • min, h, d, w, y — for business, manufacturing, supply chain
  • Hz, kHz, MHz, GHz — frequency form (e.g. “1 GHz” parses as 1ns per op)
  • Throughput form too: “500 drinks/hr”, “10 / sec”, “1k/min”

A design that mixes a 5ns flip-flop, a 2μs PCI hop, and a 20ms network call on the same canvas works as expected — every duration keeps its real ratio.

The Infrastructure section says how a block talks and how it scales.

Protocol is the main way the block talks. This shapes the code the AI writes (right client libraries) and the Python export (right imports).

ProtocolUsed for
HTTPREST APIs, web services
gRPCService-to-service calls
WebSocketLive two-way streams
AMQPMessage broker (RabbitMQ)
KafkaEvent streaming
TCP / UDPLow-level network
GraphQLQuery-based APIs
MQTTIoT devices

Scaling sets how many copies of the block run, and when more get added:

  • Min instances — the baseline (always at least this many).
  • Max instances — the ceiling (no more than this many).
  • Scale trigger — when to add more (e.g. cpu > 80%, queue.depth > 100).

When Max instances is more than 1, the Python export uses a thread pool sized to that number, and the AI uses parallel patterns like thread pools or multiple processes.