Skip to main content

Silvana Node

Silvana’s infrastructure relies on a network of nodes assigned to perform the following functions:
  • Coordination of proving and execution for Silvana apps;
  • Ensuring Silvana OS interface availability via API locally for running agents;
  • Monitoring proof jobs, app operation, logs and metrics via OpenTelemetry API push to New Relic.

Hardware requirements

These are the recommended performance requirements for a Silvana node.

Installation Guide

There are two ways you can install a node: Quick Installation (recommended) and Manual Installation.

Quick Installation

Install the latest version of Silvana with a single command:
Or with wget:
This script will:
  • Automatically detect your OS (Linux or macOS) and architecture (ARM64 or x86_64);
  • Download the appropriate binary from the latest GitHub release;
  • Install it to /usr/local/bin/silvana;
  • Verify the installation.
Supported Platforms:
  • Linux ARM64 (aarch64);
  • Linux x86_64 (amd64);
  • macOS Apple Silicon (M1/M2/M3/M4).

Manual Installation

If you choose to install manually:
  1. Go to the releases page.
  2. Download the archive suitable for your platform:
  • silvana-arm64-linux.tar.gz for Linux ARM64;
  • silvana-x86_64-linux.tar.gz for Linux x86_64;
  • silvana-macos-silicon.tar.gz for macOS Apple Silicon.
  1. Extract and install using these commands:
  1. To install a specific version instead of the latest one, run this command:
  1. After installation, verify the version works by doing this:

Uninstall

To remove Silvana, run this command:

Troubleshooting

Below are the most common issues you may encounter, along with the ways to address them.

Permission Denied

If you get a permission error, make sure the binary is executable:

Command Not Found

If silvana is not found after installation, add /usr/local/bin to your PATH:

SSL/TLS Errors

If you encounter SSL errors during download, you can use the insecure flag (not recommended for production):

Running Silvana Node

After installation, you’re ready to run the app. To start a Silvana coordinator node, run this:
This command will:
  • Fetch configuration from the Silvana API server for your network (devnet by default);
  • Auto-generate Sui keypair if not present (saved to .env);
  • Request funds automatically from the devnet faucet (10 SUI);
  • Initialize services including job searcher, Docker processor, and API server;
  • Launch monitoring for jobs on the blockchain.

First-Time Setup

If you’re running silvana start for the first time, follow these steps:
  1. Enter this command:
  1. Specify the network you’re about to use:
  1. If you have existing Sui credentials, create a .env file:
  1. To join a specific Silvana registry (e.g., shared devnet), run this command:
  1. Process all jobs from your registry:
  1. Process jobs only from a specific app instance:
  1. Run as a dedicated settlement node:
During the startup, the coordinator performs these initialization steps:
  1. Configuration Loading: fetches and injects environment variables from API server.
  2. Sui Connection: connects to the Sui blockchain API endpoint.
  3. Balance Check: verifies sufficient SUI balance for operations.
  4. Gas Coin Pool: splits large coins into smaller ones for better transaction performance.
  5. Service Startup:
    • Job Searcher: monitors blockchain for new jobs.
    • Multicall Processor: batches operations for efficiency.
    • Docker Buffer: manages container execution.
    • Event Monitor: watches blockchain events.
    • API Server: provides API for agent communication.
    • Periodic Tasks: ensures reconciliation, block creation, proof analysis.

Monitoring

Once running, you’ll see logs indicating job processing:

Troubleshooting

The coordinator may fail to start for a number of reasons. This is what you can do in each of these situations:
  • Missing credentials: will auto-generate on devnet, or check your .env file.
  • Insufficient balance: run silvana faucet sui --address 0x....
  • Connection issues: verify network connectivity to API endpoints, API TCP protocol is used for connection that requires streaming support and a continuous TCP connection.
  • Docker errors: ensure Docker daemon is running.
  • Registry not found: check SILVANA_REGISTRY and SILVANA_REGISTRY_PACKAGE values.

Next Steps

After starting your Coordinator, do this:
  1. Create a new project: silvana new myproject.
  2. Deploy an application: follow the Add Example.
  3. Monitor jobs: use silvana jobs --instance <your-app-instance>.
  4. Check balances: silvana balance sui.
For detailed application development, see the examples documentation.

Features

This is what you have with Silvana:
  • API server and client;
  • Serverless database: store events, query, fulltext search;
  • NATS JetStream on nats and wss;
  • Internal buffering in memory for batch processing;
  • Protobuf definitions and reflection on endpoint and in Rust code;
  • Monitoring: logs to file/console, logs/metrics via OpenTelemetry API push/REST pull, Grafana/Prometheus/BetterStack support for logs and dashboards.

Performance

The table below features how Silvana performs:

Deployment

To deploy an app, follow the instructions below.
  1. Cross-build Rust executable using Docker and upload it to S3
  1. Run pulumi script to:
  • Create AWS Stack, including EC2 instance;
  • Install certificates, NATS, Silvana API;
  • Configure and run services.

Protobuf

Follow this workflow to use Protobuf:
  1. Create proto definitions.
  2. Compile with make regen for Rust and buf lint && buf generate for TypeScript - definitions will be compiled to SQL, SQL migrations, Rust interfaces with reflection and server/client, TypeScript interfaces and client, sea-orm interfaces for database.

Examples of clients