Open the console

Releases

Changelogs

What changed in each published package, taken from the changelog that ships inside it. Two of these you install by name; the rest arrive as dependencies of those two.

Reading a version number

Every package carries its own version and is released by its own tag, so they move apart on purpose. A version shown as unreleased is declared in the source and not yet published — it is what the next release will contain.

elan-cli PyPI

0.1.3 — unreleased

Added

  • elan init makes the repository ready for an AI coding assistant. It writes a CLAUDE.md naming the rules a deploy enforces — bump MANIFEST.version, add targets with elan new, push before deploying, never put a secret in a file — and linking this platform's docs and its llms-full.txt. It also writes a .claude/settings.json that lets an assistant run read-only commands unasked, asks before anything that deploys, spends, deletes or pushes, and refuses to read .env. Neither file is overwritten if it exists, and .claude/settings.local.json is git-ignored.

0.1.2 — 2026-11-10

Changed

  • elan login reaches the production API with no arguments. --api is now the override for anything else, which is what this README has said since the first release. Precedence, highest first: --api (which is written down and therefore remembered), then ELAN_API, then the stored config.json, then production. It used to refuse to run without one, on the reasoning that a client aimed at a staging environment deploys somebody's first agent there without saying so. That was sound while there was no production to point at, and stopped being sound once there was — a developer who had just installed the CLI was asked for a URL that appears nowhere in the package they installed.

Fixed

  • The CLI reference documented ELAN_CONFIG_HOME, which nothing read; the variable is and always was ELAN_HOME.

0.1.1 — 2026-11-09

Added

  • elan --version, which also names the elan-sdk version it is running against. The two publish independently, so a current-looking CLI can be sitting on an older SDK. Nothing sends either number to the platform, so this answers "which one have I got" and not "is mine too old".

0.1.0 — 2026-11-09

First public release.

uv tool install elan-cli — the install five documents had described since before it was possible. Sign in with a device-code flow whose refresh token goes to the OS keyring and never to a file; scaffold a project; build the local environment; validate your manifests against your deploy file; deploy, invoke, tail logs, roll back and tear down.

elan-sdk PyPI

0.1.2 — 2026-11-10

Changed

  • base_url is optional everywhere. Elan(token=...) and Elan.from_env() both resolve it as: the argument you passed, then ELAN_API_URL, then the production API. Previously both raised without it — which this README had already described as defaulting, so the documentation was right and the code had not caught up. The environment beats the built-in default even in the direct constructor, deliberately: ignoring it would send somebody whose shell points at a non-production platform to production instead.

0.1.0 — 2026-11-09

First public release.

The client a developer's backend calls the platform with. run() subscribes to the event stream, waits for the subscription to be acknowledged, publishes the invocation, filters the stream to that run, folds the reply's parts, stops at a terminal event and closes the socket — in that order, which is the whole trick.

Contains no token verifier and no ticket minter. Those are platform-side controls, and a client package holding one implies the client verifies something.

elan-sdk npm

0.1.2 — 2026-11-10

Changed

  • baseUrl is optional. new ElanClient({ ... }) resolves it as: the option you passed, then ELAN_API_URL, then the production API, so a client constructed with only a credential reaches the platform instead of throwing. The environment beats the built-in default even when you construct the client directly, deliberately: ignoring it would send somebody whose shell points at a non-production platform to production instead.

0.1.1 — 2026-11-09

The first release published by CI rather than by hand. npm records the publisher as GitHub Actions over OIDC trusted publishing; there is no token in the pipeline. No functional change — the version moved to put a keyless publish on the record, because the mechanism had never actually run.

No provenance attestation, and that is expected: npm does not generate provenance for a private source repository.

0.1.0 — 2026-11-09

First public release. Published by hand with a granular token, because a trusted publisher could not yet be bound to the package.

The same API as the Python elan-sdk, sharing its version number so the two can be compared. ESM only: exports declares types and import, so a CommonJS require will not resolve. elan-sdk/react ships the provider and hooks and takes react as a peer dependency.

elan-agentkit-contracts PyPI

0.1.1 — 2026-11-10

Added

  • endpoints, holding DEFAULT_API_URL and ENV_API. This is the one place the default platform is spelled: elan-cli and elan-sdk import it and the TypeScript SDK has it generated, so the three cannot disagree about where an unconfigured client points.

0.1.0 — 2026-11-09

First public release.

The models a client and the platform both have to agree on — wire envelopes, the manifest and policy schema, the artifact scope vocabulary, the deploy spec, ticket and OAuth vocabulary, and the elan init scaffolding templates.

Extracted from the platform's own agentkit-core so that elan-sdk and elan-cli could be published at all: a workspace path dependency is uv-local metadata that never reaches wheel METADATA, so a published wheel declared a bare requirement on a name this project does not own. Publishing the whole of agentkit-core instead would have shipped the token verifiers, the ticket minter, the database layer and the broker into every application that installed the SDK. This package contains none of those, and depends only on pydantic and pyyaml.

elan-agentkit-core PyPI

0.1.1 — 2026-11-10

Added

  • An endpoints module re-exporting the default platform URL from elan-agentkit-contracts, so the TypeScript generator can reach it the same way it reaches every other shared constant.

0.1.0 — 2026-11-09

First public release, as elan-agentkit-core.

This is a dependency, not a product. It carries the service machinery an agent container needs — sessions, the broker, metering, the token verifiers, artifact scoping, email and comms clients — and it is published because elan-agentkit-runtime depends on it, not because an application should install it.

The DISTRIBUTION is branded; the import name is still agentkit_core and the directory still packages/agentkit-core. A distribution name is a registry reservation and has to be ours; an import name is source, and these modules are imported by the platform's own code and by an agent container, never typed by a customer.

elan-agentkit-runtime PyPI

0.1.1 — 2026-11-10

Fixed

  • The source distribution no longer ships Dockerfile, Dockerfile.base and Dockerfile.tenant. They describe this monorepo's directory layout and could not build from the sdist anyway, because they copy a root manifest and lock file that are not in it. Every published package now names what its sdist ships rather than taking "everything not ignored by git".

0.1.0 — 2026-11-09

First public release, as elan-agentkit-runtime.

This is a dependency, not a product. elan env installs it into the .venv beside your elan.yaml, which is what elan validate and elan adk import your agents through. One name: elan-agentkit-core and elan-agentkit-plugins are its dependencies, and it is the same single package the platform's own runtime image installs — so what you drive locally is the agent as deployed.

Before this release the only way to get it was a checkout of the platform monorepo, pointed at by ELAN_RUNTIME_SRC. That flag and that environment variable are gone.

elan-agentkit-plugins PyPI

0.1.0 — 2026-11-09

First public release, as elan-agentkit-plugins.

This is a dependency, not a product. The ADK plugins the platform installs around every agent: the ledger hold and settle, autonomy tiers and tool policy, observability, typing status, attachment injection and MCP App surfaces. Installed beside elan-agentkit-runtime, which depends on it.

Every callback name here is one ADK's BasePlugin declares, because ADK resolves them by name and a misspelled one silently never fires.

Reading this as a model? llms.txt indexes every page, and each page has a “Copy for AI” control.