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).

gai_ + marketplace — resolved in 0.3.2: client.rareeai.* now routes through the GreenlandAI door (greenlandai.ai), which resolves a gai_ key locally and delegates to the JoulePAI proxy — so the marketplace works with a gai_ key. (<= 0.3.1 pointed at joulepai.ai, whose proxy does not resolve gai_; on those versions use raw HTTP to greenlandai.ai/api/v1/marketplace/*.) eyl_ / OAuth marketplace access 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.4.tar.gz (41.1 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.4-py3-none-any.whl (44.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: greenlandai-0.3.4.tar.gz
  • Upload date:
  • Size: 41.1 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.4.tar.gz
Algorithm Hash digest
SHA256 010e346d3e1135c0e3ac8830ae3accb408e282c32a873723c1e4c8ff6cd19ac1
MD5 c8994d918696904f63075158bdfb57ad
BLAKE2b-256 0e2c0bab5fab885b57b0aa4d7453f4900c251f557c98c2d2db5d25dbd21146b9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: greenlandai-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 44.7 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6daef26e87787c4799fb2327b50c150d23ffbb620311c3db864902e0fd916b35
MD5 8b0eff313423f62851634c3df9f60547
BLAKE2b-256 4100493fb4e7bd87718f3a4907140a09b77e760f8cb08cfd99718be6c30039c7

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.4 This release

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

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