Skip to main content
Barekey stores values as strings, then parses them according to each variable’s declared type. That matters because await barekey.get("KEY") returns the parsed value, not just the raw string.

Supported declared types

Declared typeReturned SDK value
stringstring
booleanboolean
int64bigint
floatnumber
dateDate
jsonparsed JSON value

Creating typed variables

Examples:
barekey env new MAX_CONNECTIONS 100 --type int64
barekey env new FEATURE_ENABLED true --type boolean
barekey env new RELEASED_AT 2026-03-14T12:00:00.000Z --type date
barekey env new FEATURE_FLAGS '{"darkMode":true}' --type json

Reading typed values with the SDK

const maxConnections = await barekey.get("MAX_CONNECTIONS");
const featureEnabled = await barekey.get("FEATURE_ENABLED");
const releasedAt = await barekey.get("RELEASED_AT");
const featureFlags = await barekey.get("FEATURE_FLAGS");
Typical resolved value shapes:
  • MAX_CONNECTIONS -> 100n
  • FEATURE_ENABLED -> true
  • RELEASED_AT -> new Date(...)
  • FEATURE_FLAGS -> parsed JSON

Use inspect() for raw and parsed values together

const result = await barekey.get("MAX_CONNECTIONS").inspect();

result.value; // bigint
result.rawValue; // "100"
result.declaredType; // "int64"

Why declared types matter

Declared types make Barekey more useful because they:
  • produce better generated SDK types
  • reduce manual parsing in application code
  • make CLI and API metadata easier to understand
  • catch bad values earlier

Recommendation

Always set --type when creating variables unless you truly want an unstructured string value.