Navigating Hasura
This page is only relevant when testing on a local machine or using a self-hosted version of Envio that uses Hasura.
Introduction
Hasura is a GraphQL engine that provides a web interface for interacting with your indexed blockchain data. When running HyperIndex locally, Hasura serves as your primary tool for:
- Querying indexed data via GraphQL
- Visualizing database tables and relationships
- Testing API endpoints before integration with your frontend
- Monitoring the indexing process
This guide explains how to navigate the Hasura dashboard to effectively work with your indexed data.
Accessing Hasura
When running HyperIndex locally, Hasura is automatically available at:
http://localhost:8080
You can access this URL in any web browser to open the Hasura console.
When prompted for authentication, use the password: testing
Key Dashboard Areas
The Hasura dashboard has several tabs, but we'll focus on the two most important ones for HyperIndex developers:
API Tab
The API tab lets you execute GraphQL queries and mutations on indexed data. It serves as a GraphQL playground for testing your API calls.

Features
- Explorer Panel: The left panel shows all available entities defined in your
schema.graphql
file - Query Builder: The center area is where you write and execute GraphQL queries
- Results Panel: The right panel displays query results in JSON format
Available Entities
By default, you'll see:
- All entities defined in your
schema.graphql
file dynamic_contracts
(for dynamically added contracts)raw_events
table (Note: This table is no longer populated by default to improve performance. To enable storage of raw events, addraw_events: true
to yourconfig.yaml
file as described in the Raw Events Storage section)
Example Query
Try a simple query to test your indexer:
query MyQuery {
User(limit: 5) {
id
latestGreeting
numberOfGreetings
}
}
Click the "Play" button to execute the query and see the results.
For more advanced GraphQL query options, see Hasura's quickstart guide.
Data Tab
The Data tab provides direct access to your database tables and relationships, allowing you to view the actual indexed data.

Features
- Schema Browser: View all tables in the database (left panel)
- Table Data: Examine and browse data within each table
- Relationship Viewer: See how different entities are connected
Working with Tables
- Select any table from the "public" schema to view its contents
- Use the "Browse Rows" tab to see all data in that table
- Check the "Insert Row" tab to manually add data (useful for testing)
- View the "Modify" tab to see the table structure
Verifying Indexed Data
To confirm your indexer is working correctly:
- Check entity tables to ensure they contain the expected data
- Look at the
db_write_timestamp
column values to confirm when data was last updated - Newer timestamps indicate fresh data; older timestamps might indicate stale data from previous runs
Common Tasks
Checking Indexing Status
To verify your indexer is actively processing new blocks:
- Go to the Data tab
- Select any entity table
- Check the latest
db_write_timestamp
values - Monitor these values over time to ensure they're updating
(Note the TUI is also an easy way to monitor this)
Troubleshooting Missing Data
If expected data isn't appearing:
- Check if you've enabled raw events storage (
raw_events: true
inconfig.yaml
) and then examine theraw_events
table to confirm events were captured - Verify your event handlers are correctly processing these events
- Examine your GraphQL queries to ensure they match your schema structure
- Check console logs for any processing errors
Resetting Indexed Data
When testing, you may need to reset your database:
- Stop your indexer
- Reset your database (refer to the development guide for commands)
- Restart your indexer to begin processing from the configured start block
Best Practices
- Regular Verification: Periodically check both the API and Data tabs to ensure your indexer is functioning correctly
- Query Testing: Test complex queries in the API tab before implementing them in your application
- Schema Validation: Use the Data tab to verify that relationships between entities are correctly established
- Performance Monitoring: Watch for tables that grow unusually large, which might indicate inefficient indexing
For more information on using GraphQL with your indexed data, refer to the Hasura GraphQL documentation.