single_engine mode), the firebolt Engine hosts its own metadata service, backed by a local SQLite database.
There is no separate process and no Postgres.
This is the simplest way to run an Engine.
The trade-off is that the metadata belongs to that one Engine and cannot be shared: to run more than one Engine against the same data, use standalone metadata instead.
These instructions assume you have the firebolt binary on your PATH, as described in Get the binaries.
Examples use Amazon S3; for other object stores, change the storage block as shown in engine configuration.
Provide object storage credentials
The engine reads object storage credentials from the standard AWS environment variables. Export them in the shell that starts each node, and create a bucket for managed tables:Single-node engine
One process, embedded metadata, managed tables in object storage. Omitting theinstance block selects the default embedded mode.
Write the configuration into the data directory:
--data-dir must be absolute because the local query socket is derived from it.
--detach blocks until the node is ready and prints JSON containing the process ID:
--http-port (3473), and only for the clients that submit queries.
Clean up: Stop the node by its process ID.
Multi-node engine
One Engine, two nodes, one node per machine, still embedded metadata. Node 0 hosts the embedded metadata service on port 6500; node 1 connects to it automatically at<node 0 host>:6500.
Both nodes share one engine.nodes list, and --node selects which entry each process is.
Set each node’s host to the address its peer reaches it on and keep the default ports.
With one node per machine the defaults never collide, so there is nothing else to configure:
--detach here: each node’s readiness check needs its peer, so starting them one at a time deadlocks.
aragog_port (5678), shufflepuff_port (16000), storage_agent_port (3434), and storage_manager_port (1717); the embedded metadata port (6500) from node 1 to node 0; and --http-port (3473) from your clients.
Clean up: stop each node by its process ID, remove the data directories, then empty and remove the bucket.
To run both nodes on one machine for local testing, see Colocate multiple nodes on one host.
That needs distinct ports per node and is not a production layout.
You cannot share embedded metadata between Engines
Embedded metadata is internal to one Engine. It is reachable only by that Engine’s own nodes, and there is no configuration that points a second Engine at another Engine’s embedded metadata. A secondfirebolt process started in embedded mode hosts its own, independent metadata and sees its own catalog, even if you point it at the same bucket.
The two Engines would then write conflicting metadata for the same storage.
To have more than one Engine read and write the same tables, the metadata must live in a service outside any single Engine.
That is exactly what standalone metadata provides.