apiary attempts to provide coverage of most Honeycomb API resources.
The project also serves as an experiment around interactions between a safety-centric language (Rust) and LLM coding (mostly Claude at this time).
brew tap bixu/apiary
brew install apiarygit clone <repository-url>
cd apiary
cargo build --releaseThe binary will be available at target/release/apiary.
cargo run -- --helpexport HONEYCOMB_API_ENDPOINT="api.eu1.honeycomb.io"
export HONEYCOMB_CONFIGURATION_API_KEY="****"
export HONEYCOMB_ENVIRONMENT="dev"
export HONEYCOMB_MANAGEMENT_API_KEY="****"
export HONEYCOMB_MANAGEMENT_API_KEY_ID="hc***_****"
export HONEYCOMB_TEAM="my_team"apiary --api-key=<key> --team=<team> <command> <subcommand> [options]# Validate API key and show permissions
apiary auth validate# List all datasets
apiary datasets list
# Get specific dataset
apiary datasets get --dataset=myapp
# Create new dataset
apiary datasets create --data='{"name":"newapp","description":"New application"}'
# Create dataset from file
apiary datasets create --data=dataset.json# List columns in a dataset
apiary columns list --dataset=myapp
# Get specific column
apiary columns get --dataset=myapp --id=column123
# Update column
apiary columns update --dataset=myapp --id=column123 --data='{"hidden":true}'# Create and run a query
apiary queries run --dataset=myapp --data='{
"calculations": [{"op": "COUNT"}],
"time_range": 3600,
"granularity": 60
}'
# Create query without running
apiary queries create --dataset=myapp --data=query.json
# Get existing query
apiary queries get --dataset=myapp --id=query123# List triggers
apiary triggers list --dataset=myapp
# Create trigger
apiary triggers create --dataset=myapp --data='{
"name": "High Error Rate",
"query": {
"calculations": [{"op": "COUNT"}],
"filters": [{"column": "status_code", "op": ">=", "value": 400}]
},
"threshold": {"op": ">", "value": 10}
}'# List boards
apiary boards list
# Create board
apiary boards create --data='{
"name": "My Dashboard",
"queries": [{"query_id": "query123", "dataset": "myapp"}]
}'# List SLOs
apiary slos list --dataset=myapp
# Create SLO
apiary slos create --dataset=myapp --data=slo.json
# Get SLO details
apiary slos get --dataset=myapp --id=slo123apiary datasets list --format=tableapiary datasets list --format=jsonapiary datasets get --dataset=myapp --format=prettyContributions are welcome! Please ensure:
- New features maintain API consistency
- Tests are added for new functionality
- Documentation is updated
- Error handling follows existing patterns
Licensed under the Apache License, Version 2.0.