Deploy a Subgraph on Somnia using Ormi
The Graph is a decentralized indexing protocol that allows developers to query blockchain data using GraphQL. Instead of parsing complex raw logs and events directly from smart contracts, developers can build subgraphs that transform onchain activity into structured, queryable datasets.
This tutorial demonstrates how to deploy a subgraph on the Somnia Testnet using Ormi, a powerful gateway that simplifies subgraph deployment through a hosted Graph Node and IPFS infrastructure.
Prerequisites
GraphQL is installed and set up on your local machine.
A verified smart contract address deployed on Somnia.
An Ormi account and Private Key.
Install Graph CLI globally
npm install -g @graphprotocol/graph-cli
Initialize Your Subgraph
The Graph services rely on the existence of a deployed Smart Contract with onchain activity. The subgraph will be created based on indexing the events emitted from the Smart Contract. To set up a subgraph service for an example contract called MyToken
run the following command to scaffold a new subgraph project:
graph init --contract-name MyToken --from-contract 0xYourTokenAddress --network somnia-testnet mytoken
mytoken
is the folder that contains the subgraph files. Replace 0xYourTokenAddress
with your actual deployed Smart Contract address on Somnia.
This command will generate the following files:
subgraph.yaml
Defines the data sources and events to indexschema.graphql
Structure of your datasrc/mytoken.ts
TypeScript logic to handle events
Define the Subgraph Schema
For the exampleMyToken
Contract, which is an ERC20 Token, Edit schema.graphql
to index all the Transfer events emitted from the Smart Contract.
type Transfer @entity(immutable: true) {
id: Bytes!
from: Bytes!
to: Bytes!
value: BigInt!
blockNumber: BigInt!
blockTimestamp: BigInt!
transactionHash: Bytes!
}
Build the Subgraph
After customizing your schema and mapping logic, build the subgraph by running the command:
graph codegen && graph build
This will generate the necessary artifacts
for deployment.
Deploy Using Ormi
Open the Somnia Ormi website https://subgraph.somnia.network/ and create an account.

On the left navigation menu, click the "key" icon to access your privateKey.

Deploy your subgraph to Ormi’s hosted infrastructure with the following command:
graph deploy mytoken --node https://api.subgraph.somnia.network/deploy --ipfs https://api.subgraph.somnia.network/ipfs --deploy-key yourORMIPrivateKey
Replace yourPrivateKey with your Somnia Ormi account private key.
Once deployed, Ormi will return a GraphQL endpoint where you can begin querying your subgraph.
Return to the dashboard to find your list of deployed subgraphs.

Open the deployed subgraph in the explorer to interact with it:

Conclusion
You have successfully deployed a subgraph to index events emitted from your Smart Contract. To challenge yourself even further, you can extend your build:
Expand your schema and mapping logic to cover more events.
Connect your subgraph to a frontend UI or analytics dashboard.
For more information, visit the Ormi docs.
Last updated