Repository navigation
cli-v0.11.0
Runx CLI 0.11.0
Runx 0.11.0 keeps every secret in one place, runx secret, and a connector
whose credential's variable is set needs no setup at all. A name without a
version runs at the newest version your runx reads, so a package published for
a newer runx no longer breaks an older one. What runx adds to a project now
lives under .runx, apart from the skills and connectors you write. Connectors
can run as a person's signed-in browser account, and the payment skills settle
through Stripe and PayPal as well as x402.
Highlights
- One secret command.
runx secret set <name>keeps a value sealed in the
runx home, or--from <reference>keeps it in 1Password, AWS Secrets
Manager, AWS Systems Manager Parameter Store, Vault, the system keychain or a
file, read through that manager's own CLI on every use.list,rmand
readcomplete it. A connector binds one withrunx connector use <connector> --secret <name>, the managed agent names one withrunx config set agent.secret <name>, and a program reads one withrunx secret reador
the client'ssecrets.read. Setting a secret again serves everything that
names it from its next call. - Variables need no setup. A connector with no instance selected binds the
credential whose variable is set in the environment or the workspace.env,
asrunx connector usewould, and stores nothing. A selected instance still
wins, and two set variables refuse rather than choose. - The newest version your runx reads. A skill or connector named without a
version takes the newest published version this runx reads: the current one,
or the newest older one when the current version needs another runx. The
output'snewest_unreadnames the version passed over and why. A version
named outright is installed as named, or refused when this runx does not read
it. - Your files and runx's apart. Every package runx adds goes to
.runx/added-skillsand.runx/added-connectors.skills/and
connectors/hold what you write, and your own copy of a skill or connector
answers its name first, whatever version a ref names. - Browser-session connectors. A connector's session can name the tool that
reports its signed-in account. Setup pins that account, and every operation
checks it again and runs as it. Theredditskill reads and acts through the
account's own signed-in Brave profile and reads each post, comment and vote
back. - More payment providers. The
stripe,paypalandlinkconnectors
carry exact amounts, OAuth custody, native approval and durable
acknowledgements.chargeandrefundsettle through a Stripe, PayPal or
x402 merchant account, andpaypays through a held x402 wallet or an
approved Link authorization.
Added
runx secret set|list|rm|read,runx connector use --secret,runx config set agent.secret,runx connector import-mcp --secretandrunx connector use --hosted --secret. The client gainssecrets.read.- The registry lists a connector's versions at
GET /v1/connectors/<name>/versions, as it lists a skill's, and runx reads both
histories a page at a time to find the newest version it reads. - A turn's load answers with the skill's exact
SKILL.mdand its digest and
its runners as an index with their purposes and inputs, and binds the runner
it names. A runner states its purpose in itsrun.yamldescription, and
every runner of a maintained skill with several runners states one. turn_readreads what an act's context index names, a page at a time, and
turn_listshows each open turn.fs.readreads a file by lines withstart_lineandline_countand names
the whole file's digest.fs.edit,fs.writeandfs.apply_bundlereturn
each file's diff.agent-sessionsearches the web withexabeside reading pages.github'sactivityrunner reads every issue and pull request updated since
a time, each in the fields a reader needs.- The
twitterskill saves an X plan once by its digest and continues it from
its own progress, so later calls name only the digest. validateTurnLoadContractin@runxhq/contractschecks a completed load's
output, and the registry's public skill catalog rule now lives in
@runxhq/contracts.
Changed
- A skill install is written beside its destination and moved into place only
once everything it carries reads, as a connector install already was, so a
version runx does not read leaves nothing in the project. - A run reads only the connectors it reaches, so one connector that cannot be
read fails only what reaches it. - A secrets manager runs with the operator's own environment in the runx home,
so a workspace.envnever signs it in, configures it or chooses what it
trusts. - Memory is its host's: runx reads no
MEMORY.mdinto an act. Memory a host
supplies travels as any admitted context. - A command's result carries its output by default, and output past the
capture limit is carried as far as it held. - A tool's input offers the exact shape it decodes, defaults included.
- The
reddittool compiles its browser bridge once instead of on every call. - Every release platform runs the README quickstart in its release smoke.
Fixed
- Windows host commands retain
SystemRootand the other documented process
variables regardless of their inherited casing, so Node can initialize. - On Linux, a non-root user could not install or run a registry skill on a
machine with a/skillsdirectory, or from/: the filesystem root is no
one's workspace now (#556). - The README quickstart runs from a fresh clone whatever connectors the
workspace holds: a connector manifest this runx cannot parse, a broken one or
one written for a newer runx, fails only a run that reaches that connector
(#557). - A bundled session calls the connectors its load bound.
- A nested act's call runs, and a cancelled call is recorded as stopped.
- An approved effect whose file changed since the person saw it is refused,
naming what changed, instead of failing the run. runx registry searchnames a connector by its ref in the install command
it offers.- An isolated harness case keeps the connectors its skill pins.
fs.searchtakes one file as well as a directory and refuses a secret it
resolves to. A change over a file that names no digest is told to name the
content_digestits read returned.- The commands a client-started run executes keep the host's
HOME. research's synthesize act refuses an answer of another shape at the act.
Removed
- Credential profiles,
runx connector use --from,runx config set api-key --fromand--bearer-stdin: a secret replaces each. - Reading
MEMORY.mdandRUNX_MEMORY_PROFILE_PATHinto an act.
Security
-
rustls-webpki 0.103.16 and webpki-root-certs 1.0.10 fix RUSTSEC-2026-0382 and
RUSTSEC-2026-0383. -
A secret binding carries a proof only its runx home can make, so a project
cannot plant one. -
A secrets manager never takes its sign-in, configuration or trust from a
workspace.env. -
Tokio 1.54.1 and ctutils 0.4.5 fix RUSTSEC-2026-0386 and
RUSTSEC-2026-0385.
Breaking changes
- Each project gets a new kernel store,
.runx/kernel-v2.sqlite, and 0.11.0
reads nothing 0.10 recorded in.runx/kernel.sqlite. Connector instances,
standing approvals, paused runs and effect custody start empty, so each
project binds its connectors again once. While the 0.10 store holds a
provider effect in flight, 0.11.0 refuses to start the new store and names
those acts. - The home config upgrades once on first use: each credential profile becomes
a secret of its name, the managed agent's key becomes the secretagent,
and the ids of sealed values becomematerial_id,api_token_material_id
andpublish_api_token_material_id. Secrets and logins keep their sealed
files. - The
redditconnector names an account's browser profileprofile, and
its bind command takes--profile. Each account binds its browser once
again. - The
sqlconnector's connection config and requests name the configured
sourcesource. - Packages runx adds live under
.runx/.skills/andconnectors/are
yours, and a copy there answers its name before any registry version. - runx reads no
MEMORY.mdinto an act. - Packages published for 0.11.0 can use manifest fields that 0.10.2 refuses,
such as a runner'sdescriptionand the new connector session and payment
shapes. - Every contract names its fields one way (
CONVENTIONS.md):_refis a runx
reference,_uria URI,_ida bare id,_patha file path,_locatora
provider's locator, and every digest readssha256:<hex>;stateis where
something is in its lifecycle,statushow a check came out andoutcome
how a run ended. Receipts, events and records 0.10.2 wrote keep verifying
with 0.10.2. - A packet id names its owner. A core packet, which runx itself emits or
reads, isrunx.<name>.v<N>; a package's is
<publisher>/<package>.<name>.v<N>, such as
runx/lead-qualify.qualification.v1, and lives in that package's
packets/<name>.v<N>.schema.jsonat$id
https://schemas.runx.ai/packages/<publisher>/<package>/<name>/v<N>.json.
runx refuses any other form, and every packet of runx's own skills has its
new id. - A package packet resolves from the package its id names: the package
itself, the pinned copy its bundle carries, or the owning package in the
workspace or added to the project. Nothing resolves through a workspace
dist/packets, and the rootpackage.jsonrunx.packetsfield is gone.
Publishing pins each packet a package reads from another package and never
copies a core one. - The registry's digest of a published bundle's files is
bundle_digest,
writtensha256:<hex>, in skill versions, installs, paid listings and the
x402 discovery extension.package_digestis only ever the execution
package digest a run records.
Upgrade guidance
- Before upgrading, finish or reconcile on 0.10.2 any run with a provider
effect in flight. If 0.11.0 names one later, either finish it on 0.10.2 or
move.runx/kernel.sqliteaside to discard it. - Install 0.11.0 and run any command once to upgrade the home config. Then
bind each project's connectors again withrunx connector use. - Rename
source_reftosourcein eachsqlconnection config. - In each project, delete the packages 0.10.2 added under
skills/<owner>/<name>/<version>/andconnectors/<name>/<version>/. 0.11.0
adds them under.runx/and otherwise treats the old copies as your own,
never updating them. - Keep a model key with
runx secret set agentandrunx config set agent.secret agent, or let the provider's own variable supply it. - Stay on 0.11.0 or later to run the current versions of runx's skills and
connectors: 0.10.2 refuses them. - A package of your own that declares packets moves each to its
packets/<name>.v<N>.schema.jsonunder the id
<publisher>/<package>.<name>.v<N>, with that id's$id, renames the id
where its runners declare it, and is published again. A package that reads
a runx packet names it by its new id.
Contributors
Community package updates keep their original publisher identities and
contributor attribution. Maintained packages remain published by Runx.
Full changelog:
cli-v0.10.2...cli-v0.11.0