Add OPENAUDIO_ prefixed env vars for all configuration - #195
Merged
Conversation
raymondjacobson
force-pushed
the
ray/openaudio-env-vars
branch
3 times, most recently
from
April 2, 2026 22:35
46a64cc to
5238202
Compare
Introduces a `pkg/env` package with helpers (Get, String, Bool, GetInt, GetDuration, Lookup, IsSet) that check OPENAUDIO_ prefixed keys first, then fall back to legacy names for backward compatibility. Every env var now has a canonical OPENAUDIO_ version. Legacy names (nodeEndpoint, delegatePrivateKey, dbUrl, etc.) continue to work but the OPENAUDIO_ form takes priority when both are set. Cloud provider vars (AWS_*, GOOGLE_*, AZURE_*) are left unchanged as they are industry standards. Updates dev env files and docs to use the new names. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
raymondjacobson
force-pushed
the
ray/openaudio-env-vars
branch
from
April 3, 2026 00:25
5238202 to
fd4bcba
Compare
go run ./cmd/openaudio/main.go only compiled main.go, missing other files in the package like consensus_check.go. Use ./cmd/openaudio/ to compile the full package. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
rickyrombo
approved these changes
Apr 3, 2026
rickyrombo
left a comment
Contributor
There was a problem hiding this comment.
Dumb q - but why have prefixes at all?
Contributor
Author
not a dumb q at all! I thought about this. My thinking is that it reduces any likelihood of collisions in shared envs etc since people may run the docker image in various ways. I think it also makes very clear that these variables should be looked up in the open audio codebase rather than some dependency or something. |
raymondjacobson
added a commit
that referenced
this pull request
Apr 3, 2026
This reverts commit 008d5d6.
raymondjacobson
added a commit
that referenced
this pull request
Apr 3, 2026
5 tasks
raymondjacobson
added a commit
that referenced
this pull request
May 19, 2026
On a legacy creator/discovery node, the bundled /env/${NETWORK}.env
declares OPENAUDIO_ defaults (e.g. OPENAUDIO_CORE_ROOT_DIR=/data/core).
If the operator only set the legacy name with a *different* value
(e.g. audius_core_root_dir=/data/bolt), the Go env helper would pick
the OPENAUDIO_ default and look at a path that has no chain data —
producing the CometBFT `state.AppHash does not match AppHash after
replay` panic that originally got #195 reverted.
Promote externally-set legacy keys to their OPENAUDIO_ counterparts
before source_env_file runs. source_env_file is a no-op for already-set
keys, so the legacy value wins; if the operator instead set the
OPENAUDIO_ name directly, that already-set value is left alone.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
raymondjacobson
added a commit
that referenced
this pull request
May 19, 2026
* Reland OPENAUDIO_ prefixed env vars (reverts #197) This re-applies #195 (reverted in #197). The handshake panic that prompted the original revert (`state.AppHash does not match AppHash after replay. Got E3B0..., expected .`) was caused by an unrelated state-sync bug: CometBFT's state.db could end up at height 0 while the app database had block records, producing the mismatch. That class of failure has since been fixed by #253 and related state-sync reliability work, so the env-var change is safe to bring back on top of current main. Changes since #195: - Keep state-sync defaults from #255 (Keep=2, BlockInterval=100000) - Carry forward #224's separate archive bucket DSN (now goes through env.String with AUDIUS_ARCHIVE_STORAGE_DRIVER_URL fallback) - Update pkg/uptime/uptime.go which post-revert added a `mustGetenv("nodeEndpoint")` call — read OPENAUDIO_NODE_ENDPOINT first with legacy fallback, drop the now-unused mustGetenv/getenvWithDefault - CLAUDE.md: keep the validator-node terminology from #264 and add the pkg/env helper list Legacy env vars (nodeEndpoint, delegatePrivateKey, dbUrl, audius_core_root_dir, spOwnerWallet, etc.) continue to work via fallback, so legacy creator / discovery node registrations are unchanged. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(entrypoint): promote legacy env vars before sourcing prod.env On a legacy creator/discovery node, the bundled /env/${NETWORK}.env declares OPENAUDIO_ defaults (e.g. OPENAUDIO_CORE_ROOT_DIR=/data/core). If the operator only set the legacy name with a *different* value (e.g. audius_core_root_dir=/data/bolt), the Go env helper would pick the OPENAUDIO_ default and look at a path that has no chain data — producing the CometBFT `state.AppHash does not match AppHash after replay` panic that originally got #195 reverted. Promote externally-set legacy keys to their OPENAUDIO_ counterparts before source_env_file runs. source_env_file is a no-op for already-set keys, so the legacy value wins; if the operator instead set the OPENAUDIO_ name directly, that already-set value is left alone. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
pkg/envpackage with helpers (Get,String,Bool,GetInt,GetDuration,Lookup,IsSet) that checkOPENAUDIO_-prefixed keys first, then fall back to legacy namesOPENAUDIO_version — legacy names (nodeEndpoint,delegatePrivateKey,dbUrl, etc.) continue to work butOPENAUDIO_takes priority when both are setAWS_*,GOOGLE_*,AZURE_*) left unchanged as industry standardsKey mappings
OPENAUDIO_NODE_ENDPOINTnodeEndpointOPENAUDIO_DELEGATE_PRIVATE_KEYdelegatePrivateKeyOPENAUDIO_DELEGATE_WALLETdelegateOwnerWalletOPENAUDIO_OWNER_WALLETspOwnerWalletOPENAUDIO_DB_URLdbUrlOPENAUDIO_ETH_PROVIDER_URLethProviderUrlOPENAUDIO_ETH_REGISTRY_ADDRESSethRegistryAddressOPENAUDIO_EXTERNAL_ADDRESSexternalAddressOPENAUDIO_PERSISTENT_PEERSpersistentPeersOPENAUDIO_ARCHIVEarchiveOPENAUDIO_RETAIN_HEIGHTretainHeightOPENAUDIO_COMET_LOG_LEVELaudius_comet_log_levelOPENAUDIO_CORE_ROOT_DIRaudius_core_root_dirTest plan
go build ./...passesCGO_ENABLED=0 GOOS=linux GOARCH=amd64 go buildpassesmake test-unitpassesmake upusing updated env files🤖 Generated with Claude Code