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.2.tar.gz (39.6 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.2-py3-none-any.whl (43.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for greenlandai-0.3.2.tar.gz
Algorithm Hash digest
SHA256 2f1a2858f29d0ff9e7d08200178b2b5fcaa179a381f736e74c8c87de8be2de5f
MD5 ffefe80c988ede752826f6f6b1e7535b
BLAKE2b-256 1fe35e78253aa6f2f7b4d4ed8e8b1a4253035ff858fe19f4c639251750a84a86

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for greenlandai-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a55b6d3f74d7532b6b5bbe679b6e8da9ca36f3cbd785f769ea30bce7e86f79f3
MD5 863cf69e37f615eb94885262ccc946c7
BLAKE2b-256 8933cf9f578e0bb93cf9803ef2f8a963c354005473f301a8f49380b8ec0fc773

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.4

2 files

0.3.3

2 files

This release

0.3.2 This release

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