v0.2.0: Developer alpha
The second alpha. This release reworks how Cast handles identity and reach across users and agents, makes in-agent services a first-class peer of extensions, and hardens message delivery.
Existing 0.1.x installs need a one-time data migration before starting 0.2.0. See Upgrading below. A fresh install skips it.
Highlights
- Per-channel membership. Pairing a user places them on specific channels. The
"*"wildcard still authorizes a conversation but no longer grants membership, so co-participant visibility and cross-conversation push now read concrete placement only. - Transport-blind addressing. Persisted identities are bare participants. The transport (Telegram, email, CLI) resolves at delivery time. The old
localidentity retires, and operator surfaces (cli:,admin:,console:) become first-class participants on a trust tier. - Participant discovery. An agent can list the channels and participants it can actually reach, scoped to its own placement. A query outside its rooms is denied without leaking whether the target exists.
- First-class services. In-agent services now run with host-attested identity and declarative tool approval, the same trust model extensions get, plus secrets management and an admin surface.
- Reliable outbound delivery. Failed sends retry in process and expire past a TTL into a terminal failed state, drained through a single path.
Upgrading from 0.1.x
Stop the server, then run the migration scripts in scripts/migrations/0.1-to-0.2/. They print a dry-run plan by default and only write with --apply. They are idempotent.
pnpm exec tsx scripts/migrations/0.1-to-0.2/1-bare-addresses.ts --apply --backup
pnpm exec tsx scripts/migrations/0.1-to-0.2/2-narrow-pairing-grants.ts ~/.cast/agents --apply
pnpm exec tsx scripts/migrations/0.1-to-0.2/3-packets-failed-at.ts --applySee the migration README for the full procedure, restore points, and how placement is decided.
Identity, access, and multi-agent
- Per-channel membership and the wildcard split described above.
- Transport-blind, bare-participant addressing across all persisted state.
- Participant discovery scoped to authorized reach.
- Cross-agent push authority is user-keyed. A conduit agent ferrying a push is checked against the originating user's concrete placement, not its authorization, so operator and owner privileges cannot be smuggled into a channel the user was never placed on.
Services
- Manifest-declared secrets, stored per agent and loaded into the service environment, with a restart when they change.
- Two-track service admin: a settings mirror plus a service-rendered page.
- Host-attested participant and declarative tool approval, bringing services to parity with extensions. Approval-gated tools fail closed on turns with no single participant.
- New tooling:
pnpm check:servicetype-checks a service against its registry dependencies,pnpm deploy:servicerebuilds in place.
Runtime and ops
- Gateway outbound delivery worker with in-process retry and TTL expiry.
- Host-side SDK surface policy: one table for blocked tools and the feature kill-switch, with the in-container runner kept mechanism-only.
- The agent image rebuilds automatically when build inputs change.
- Fixed a service restart race where a killed predecessor was misattributed to its successor.
Other
pnpm version:set <semver>sets every workspace package in lockstep.- SPEC, console manuals, and site docs re-grounded on the membership, push, and discovery semantics.
Full Changelog: v0.1.0...v0.2.0