appname is an optional field in ONR access logs. It is intended for observability: segment traffic by client app/tool without changing routing behavior.
Resolution order
ONR resolvesappname for logging in this order:
- Request header
appname(trimmed; if non-empty, it always wins) - If enabled, infer from
User-Agent - Fallback to
logging.appname_infer.unknown(trimmed). If empty,appnameis omitted from the log record.
Enable inference
Configure it inonr.yaml:
Inference behavior
Inference is a best-effort substring match against the lowercasedUser-Agent. It returns a normalized app name when it finds a known keyword.
Current builtin keywords include common tools/SDKs such as:
claude-codecursorwindsurfclineaidercontinueopenai-sdk(for exampleopenai-python,openai-node,openai-go)anthropic-sdk
appname header explicitly instead of relying on inference.