Isolated, observable, human-gated and metered down to the token, so your team ships business outcomes instead of infrastructure.
You bring a git repository and one elan.yaml; Elan builds it, provisions what it needs, and gives you an address to invoke it at.
# agents/invoice_triage/agent.py
from agentkit_core.manifest import (
AgentManifest, Billing, Limits)
MANIFEST = AgentManifest(
slug="invoice-triage",
version="0.1.0",
model="gemini-flash-latest",
limits=Limits(max_concurrent=4, timeout_s=120),
billing=Billing(sku="agent.chat.standard"),
)
def build(ctx):
return LlmAgent(
name="invoice_triage",
model=ctx.model, # one source of truth
instruction=INSTRUCTION,
tools=[look_up_order],
)Why now
For a decade, infrastructure has been built for two shapes of software: stateless microservices that answer a request and forget it, and batch jobs that run to completion and stop. Agents are neither.
Putting that workload on infrastructure designed for something else is how teams end up with an impressive demo and nothing in production.
Build, deploy and scale with confidence.
You write the tip. Everything beneath it is ours to build, run, patch and pay for.
Each target declares itself twice, split by who enforces what — and no field appears in both, which makes the pair a validation rather than a duplication.
MANIFEST · what it isBeside the agent, in its own code: the model, the tools, the limits, the prices, and what it may do without asking.elan.yaml · what we permitOne per repository: how big, how many, which models, which hosts it may reach, which secrets to inject.Every line below is already written and already yours to use — and crossed off the list you would otherwise be maintaining.
There is deliberately no way to supply your own build — partly because a tenant-supplied one is an attack surface we decline to have, and partly because owning the layer order is what makes one image per repository cheap to rebuild.
Without Elan, your engineers become platform engineers. With it, getting to production takes four commands.
elan initelan validategit pushelan deployAgents are written in Google ADK, so there is no new framework to learn, no Dockerfile and no Kubernetes YAML. Rollouts move a canary first, idle agents scale to zero, and every agent rolls back on its own.
Elan runs on proven cloud infrastructure. The difference is that it arrives already assembled, secured and shaped for agents.
A short introduction, if you would rather watch than read.
Every tool call resolves to one of three answers, per call, against the arguments of that particular call.
So “refunds under a thousand run themselves and bigger ones wait” is a declaration rather than an if your model can be talked out of. A ceiling bounds how far any stored policy may loosen a tool, and a refusal its author declared cannot be dropped downstream.
Put a price on a run and take money for it. You do not build a billing system to do that, and we do not take a cut of what you charge.
Reserving before the run is what makes this a ledger rather than a counter: a payer who cannot cover it is refused before the first token, and whatever the deposit over-reserved goes back.
Every run reads back as a trace: what ran, inside which node, what it cost, and where it stopped to ask somebody.
who want an agent in front of real users this week, and do not want to become platform engineers to get there.
asked to let five product teams ship agents without giving five product teams cluster access.
who need the thing running model-driven code to be isolated, auditable, human-gated where it acts, and attributable to a cost center.
Google ADK agents, in Python. The platform does not wrap the framework in a DSL of its own, so what you learn is ADK and what you keep is ADK. Beside each agent you write a short manifest saying what it is, and one file per repository saying what the platform may permit.
Yes, and that is the arrangement rather than a limitation. Your provider invoices you directly, we never see that bill, and we take no share of it — so your floor is their price list and the margin above it is yours. Your key is stored as a secret and injected; the model's hostnames are opened for you.
The CPU and memory your pods reserve, plus a small per-request charge on the wallet API if you use it. Billed on what you reserve rather than what you use, which makes your bill a function of a file you control and can reason about before deploying. Model tokens are not on it.
Because an endpoint is something an unauthenticated caller can arrive at. An invocation is a message your agent pulls from a queue instead, so there is no port to scan and nothing to brute-force — the attack surface is empty by construction rather than by a rule somebody maintains. Your replies come back on an event stream.
It runs behind its own kernel boundary, in a namespace of its own, with one database and one file prefix nothing else can read. The honest exception: agents you deliberately group into one process share an identity and a database with each other. Group the ones that already trust each other.
Yes, and without building a billing system. Declare prices in your agent's manifest, give a user a wallet keyed on whatever you already call them, and pass their id when you run it. The platform keeps that ledger on your behalf and none of it reaches your invoice from us.
Removing a project removes what was provisioned for it — the database, the queues, the secrets and the identity — and tells you exactly what goes before asking you to type the name. The database is snapshotted first and the snapshot kept for ninety days, so a mistake is recoverable and a departure is final.
It is in early access, and we would rather say so than publish an uptime guarantee we cannot yet stand behind. What we do commit to is telling you when something is broken and treating downtime as our failure rather than yours. If that is not enough for what you are building, tell us what would be.
Elan Platform is opening to a first group of developers. Tell us what you are building and we will be in touch with access.
Startups: a chance to win up to $1,000 in platform credits.