Skip to main content

greenlandai (Python)

Unified SDK for the GreenlandAI ecosystem — ENYAL, JoulePAI, RAREEAI, GreenlandAI. Supersedes but does not replace enyal-sdk v2.1.x (permanent coexistence — the standalone enterprise track stays published and maintained; see design §5).

Install

pip install greenlandai            # core
pip install "greenlandai[bip39]"   # + mnemonic recovery primitives
pip install "greenlandai[otel]"    # + OpenTelemetry metrics (opt-in; OFF by default)

Auth

from greenlandai import Client
client = Client(api_key="eyl_...")          # eyl_ (ENYAL / cross-product) API key
client = Client(api_key="gai_...")          # gai_ (GreenlandAI agent key) — for the gldai intelligence family
client = Client(oauth_token=jwt)             # web sessions: ENYAL-issued OAuth JWT
# Any api_key → X-API-Key; an oauth_token (JWT) → Authorization: Bearer. Pass exactly one.
# Passing an API key via oauth_token (or a JWT via api_key) raises immediately — no silent mis-route.
# 401s surface to you (no auto-refresh); hook: Client(..., on_auth_expired=cb)
# Key rotation = generate a new key server-side and rebuild the Client (no dual-validation window).

Known limitation (gai_ + marketplace): a gai_ key authenticates the GreenlandAI intelligence family (client.gldai.*). The marketplace (client.rareeai.*) is served via joulepai.ai, whose proxy does not yet resolve gai_ keys — for marketplace with a gai_ key, call greenlandai.ai/api/v1/marketplace/* over raw HTTP until the server side lands. eyl_ / OAuth marketplace access via the SDK is unaffected.

Hello world (one per submodule)

client.enyal.archive("agent-1", "decision_record", "k1", {"decision": "x"})
client.joulepai.transfer("@bob", 1000, note="thanks")     # auto idempotency key
client.rareeai.create_request(resource_type="gpu")        # marketplace (flat 0.5%, route-fixed)
client.gldai.query("lithium deposits greenland")

Idempotency promise matrix (auto-retry behavior — design §6, post-G1 2026-06-10)

Method (py / js) Wire class Tier Auto-retry
enyal.archive A body client_chunk_id ENFORCED ON
enyal.timestamp / create_agreement A body client_chunk_id ENFORCED ON
enyal.compliance_attest A body client_attestation_id ENFORCED ON
enyal.prove / prove_batch / prove_share_combination B body idempotency_key ENFORCED ON
enyal.disclose / request_client_disclosure B ENFORCED ON
enyal.send_message B ENFORCED ON
enyal.knowledge_upgrade · memory_structured_query · memory_content_query · queue_proof NOT SUPPORTED OFF (retries may duplicate billed effects)
joulepai.transfer (pay) D body idempotency_key (proc-enforced) ENFORCED ON
joulepai.fund NOT SUPPORTED OFF (duplicate Stripe sessions possible)
rareeai.create_provider/create_request/deliver/resolve B ENFORCED ON
rareeai.approve/reject/dispute/extend_dispute NOT SUPPORTED OFF
gldai metered queries (companies/deposits/infrastructure/query/projects/mapdata) C header X-Idempotency-Key ENFORCED ON
all GET reads safe ON

Every billed call auto-generates a UUID4 key (stable across retries) unless you pass idempotency_key / idempotencyKey yourself.

Observability (OFF by default)

Client(logger=my_logger, on_retry=..., on_terminal_failure=..., metrics=otel_metrics()) — DEBUG logs redact Authorization + X-API-Key structurally.

Migration from enyal-sdk 2.1.0: see MIGRATION.md. Changelog: CHANGELOG.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

greenlandai-0.3.1.tar.gz (39.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

greenlandai-0.3.1-py3-none-any.whl (43.1 kB view details)

Uploaded Python 3

File details

Details for the file greenlandai-0.3.1.tar.gz.

File metadata

  • Download URL: greenlandai-0.3.1.tar.gz
  • Upload date:
  • Size: 39.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for greenlandai-0.3.1.tar.gz
Algorithm Hash digest
SHA256 a8374f126d01d5018f45c6e66e0114ef035ef79cde9e181434aa3c5f2a272b26
MD5 a371a853057cd49c321b2e3067fc74c8
BLAKE2b-256 b7cf37ef76b18b15f5a387b612e987b45506ed8b686c95ee87a6712d4162167f

See more details on using hashes here.

File details

Details for the file greenlandai-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: greenlandai-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 43.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for greenlandai-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2d8788f152b772d243bca07dd386d798c86cbd2c052509f93fc624fd2c5dfe04
MD5 00b7d4b98e030a2b083f29e2d01b1b0f
BLAKE2b-256 693d62ceb2a9e2b6f0e920ec966e273af8021cb088c85732c46d4d957ec7a01c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

This release

0.3.1 This release

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page