Releases: ArgentAIOS/argentos-core
Release list
argent 2026.7.7
Highlights
- The AI workforce is real. Worker Runtime v2 lands end-to-end: blank-slate
ephemeral worker sessions with compiled role profiles (#452), a full lease
lifecycle — claim/heartbeat/halt with truerunNowsemantics (#453), a
work_reportcompletion contract that lets a conductor demo COMPLETE on a
local gemma model (#450), and a grading store with scorecards and a
quantified promotion gate so a worker earns autonomy with evidence, not
vibes (#463). The worker wizard mounts straight from the Workforce Board
(#440), and local-model workers are viable thanks to native tool-call
support with blank-slate prompts (#444, #447). - One source of truth again. ArgentOS-Business merges back into core —
business logic, dashboard surfaces, and runtime live in a single repo and
ship together (#435). - Approvals you can trust. Deny now denies, timeouts actually fire, failed
sends fail loud, andtoolsAllowis enforced end-to-end (#462). Cron
approval buttons render and resolve (#457, #459), with a Telegram text-reply
fallback when buttons aren't available, and the approval text-command path
is refactored to be provably testable (#458). - Rust daemons graduate from experiment to credible. Fail-closed bearer
token auth on both shadow daemons — no token, no start, no route (#470);
argentd answers canary receipt methods over WebSocket (#468); and the
authority delegation seam is designed and locked after adversarial review
(#469). - An idle gateway now burns zero inference. Deterministic salience gates
keep the kernel (#451), heartbeat, contemplation, and closet runners (#454)
silent unless something actually changed, and the personal-skill block is
off the turn critical path (#436) — idle boxes stay cool and cheap. - Install and update paths harden. Unattended installs never block on the
master-key prompt (#434 closes #429),argent updateruns native rebuilds
under the gateway's own pinned Node and verifies the ABI before restart
(#448 closes #416), and a fresh PostgreSQL self-bootstraps its full schema
and agent rows at first init (#439). - Security and CI baseline. All 11 critical Dependabot alerts cleared
(vitest, protobufjs, shell-quote, baileys) (#456), and the unit suite is
green with a new blocking CI unit-test job so it stays that way (#461).
Changes
feat: merge ArgentOS-Business back into core — one source of truth (distillation merge)(#435)feat(worker): Worker Runtime v2 P2 — blank-slate ephemeral sessions + compiled role profiles(#452)feat(worker): Worker Runtime v2 P3 — lease lifecycle (claim/heartbeat/halt) + full runNow semantics(#453)feat(worker): work_report completion contract — conductor demo COMPLETES on gemma (v2 D5)(#450)feat(workforce): WR2 P5 — grading store, scorecards, quantified promotion gate (D10)(#463)feat(dashboard): mount the worker wizard from the Workforce Board(#440)feat(demo): conductor demo kit + local-provider runtime auth + bootstrap markers(#441)feat(argentd): canary receipt methods over ws — status + generateLocalProof(#468)perf(kernel): deterministic salience gate — idle gateway burns zero kernel inference (LIMBIC law 3)(#451)perf(runners): idle-salience gates for heartbeat + contemplation + closet quick wins (LIMBIC law 3)(#454)perf(#405): take the personal-skill block off the turn critical path (writes + reads)(#436)refactor(workflows): testable runApprovalTextCommand (proves #2 resolve+resume)(#458)test: green the unit suite + add blocking CI unit-test job(#461)chore(deps): clear all 11 critical Dependabot alerts (vitest, protobufjs, shell-quote, baileys)(#456)docs(rust): authority delegation seam design — locked after adversarial review(#469)
Fixes
fix(rust): fail-closed token auth on both shadow daemons (delegation seam P1)(#470)fix(workflows): approval integrity — deny denies, timeouts fire, sends fail loud, toolsAllow enforced(#462)fix(workflows): cron approval buttons + Telegram text-reply fallback(#457)fix(telegram): wire sendPayload into extension outbound (approval buttons render)(#459)fix(workforce): D9 stubbed calls no longer trip the simulate violation wire(#467)fix(worker): textual pseudo-tool-call detection + format correction (#442)(#444)fix(worker): native tool calls + blank-slate prompt — local-model workers viable (#442, #407 worker lane, #445 P0)(#447)fix(operator): builder tool-name validator, Discord crash guards, pnpm resolver + Rust shadow evidence(#465)fix(operator): calendar failure cooldown + workflows.resume replay guard(#466)fix(dashboard-api): prefer gateway.auth.token over stale env token (DocPanel 401)(#460)fix(compact): resolve the session's agent; sweep deprecated CLI profiles from all agent stores(#455)fix(installer): never block unattended installs on the master-key prompt (closes #429)(#434)fix(update): run native rebuilds under the gateway's pinned Node + verify ABI (#416)(#448)fix(pg): fresh databases self-bootstrap full schema + agent rows at init(#439)fix(memu): keep singleton identity slots canonical under noisy queries(#437)fix(demo): conductor SOP completes its own job task (tickets read-only)(#443)
argent 2026.5.6.7
Fixes
- Public
curl | bashinstall no longer dies on the pinned pnpm. On a Mac
with no compatible system Node, the installer provisions its own private Node
runtime — but the pinned-pnpm activation invokedcorepack/npm(both
#!/usr/bin/env nodescripts) without that Node onPATH, so they failed
withenv: node: No such file or directoryand the install fell back to a
mismatched global pnpm and aborted. The activation now puts the runtime Node
onPATH, disables corepack's non-interactive download prompt
(COREPACK_ENABLE_DOWNLOAD_PROMPT=0), and surfaces the corepack error instead
of swallowing it. - Dashboard (port 8080) builds again. The dashboard's
vite buildimports
shared UI source that depends on@noble/ed25519; under the installer's
--ignore-workspaceinstall it was unresolved and the build failed. Declared
@noble/ed25519so it resolves for the dashboard bundle.
argent 2026.5.6.6
Highlights
- Argent's kernel learns to notice itself. New kernel-fitness substrate
tracks engagement, surfaces "system unavailable" on shutdown, detects
artifact-open via atime, and writes a stall composite ledger — the
foundation for Argent to know when it's actually being used vs idle.
(#388, #390, #391, #392, #393, #394, #395) - Installer Mac path matures.
install.shnow auto-installs Ollama on
macOS (#397), the wizard writeskernel.localModelafter a local-runtime
pick (#398), andargent updaterebuilds native modules after dependency
installs (#396) so the post-update ABI-mismatch class of error stops
showing up. - Auth recovery hardened across both halves. Dashboard surfaces a
recoverable banner instead of silently 401-ing when localStorage hits
quota or the api-server rejects a rotated token (#417). Gateway-side
tools (doc_panel, workflow-runner, workflow-execution-service)
fall back togateway.auth.tokenfrom argent.json so they stop
failing with "Invalid token" after a token rotation (#422). - Memory recall stops burying exact answers. New dominance guardrail
in the MemU LLM reranker prevents the LLM from demoting a clearly
dominant pre-rerank top in favor of broad identity facts that only
sound related (#420 closes #418). - Performance + correctness wave. AppForge
bases.listcache stops
the per-web-turn cascade (#409); sessions skillsSnapshot deduplication- workflow auto-prune cut sessions.json from ~98 MB to <16 MB on real
installs (#412);argent updateclean-check is now honest about
regenerated artifacts and surfaces dirty paths (#414);tinyfish_search
becomes a first-class tool (#415); Ollama pings now use IPv4 to avoid
the localhost IPv6-first resolution failure (#385); the wizard's
Ollama + MLX model catalog refreshed to May 2026 (#387); a new
read-only System Health Panel M1 lands in the dashboard (#399).
- workflow auto-prune cut sessions.json from ~98 MB to <16 MB on real
Changes
feat(kernel): kernel-fitness Phase 1 — extract inner-loop prompt to scaffold + bump tickMs default(#388)feat(kernel): kernel-fitness Phase 2 — fitness writer + stall composite ledger(#390)feat(kernel): kernel-fitness Phase 3a — engagement tracker backend + fitness-writer integration(#391)feat(kernel): kernel-fitness Phase 3b.1 — notifier writes surface_emitted to engagement-ledger(#392)feat(kernel): kernel-fitness Phase 3b.2 — system_unavailable on shutdown + startup recovery(#393)feat(kernel): kernel-fitness Phase 3b.3 — artifact-open atime detection(#394)feat(kernel): kernel-fitness Phase 3b.4 — engagement.record gateway handler(#395)feat(installer): Phase B — install.sh auto-installs Ollama on Mac(#397)feat(installer): wizard writes kernel.localModel after local runtime pick (Phase C)(#398)feat(dashboard): System Health Panel M1 (read-only diagnostics)(#399)feat(tools): first-class tinyfish_search tool(#415)feat(wizard): default Ollama+MLX models to current May 2026 catalog(#387)perf(gateway): cache appforge.bases.list 60s + invalidate on writes(#409)perf(sessions): dedup skillsSnapshot to sidecar + auto-prune stale workflows(#412)docs: restore release-core + release-swift-mac runbooks(#419)
Fixes
fix(memory): reranker guardrail — prevent LLM from burying dominant pre-rerank top(closes #418, #420)fix(gateway): dashboardApiHeaders falls back to gateway.auth.token from argent.json(#422)fix(dashboard): surface auth-lost banner instead of silent 401(closes #400, #417)fix(dashboard): fetchJsonWithRetry attaches auth header via fetchLocalApi(closes #403, #411)fix(update): honest clean-check + ignore regenerated artifacts + show dirty paths(closes #413, #414)fix(update): rebuild native modules after deps install(closes #386, #396)fix(gateway): pingOllama uses IPv4 literal to avoid IPv6-first localhost resolution(#385)
v2026.5.6.3 — TinyFish full stack + 1Password + pi-bridge cluster
2026.5.6.3
Third micro release on top of v2026.5.6. 17 commits / 11 issues closed,
combining the full TinyFish web toolkit (search + fetch + browser + agent),
1Password Service Account as a first-class secrets backend, and the
pi-bridge cluster that unblocks the long-pending pi-ai 0.73.1+ bump (#182).
No schema changes, no breaking API changes. Safe drop-in upgrade from
v2026.5.6.2.
Highlights
- TinyFish becomes the recommended default web stack. Free Search +
Fetch ship as the first-class default for every account (no API-key
wrangling, no credits), and the paid Browser API + Agent API now ship
as first-class agent tools alongside them. Operators get a working
web stack in 30 seconds; agents can drive a real browser
(Playwright/CDP) or describe goals in natural language and have
TinyFish navigate / click / fill on their behalf. - 1Password Service Accounts as a first-class secrets backend.
Per-keyop://Vault/Item/fieldreferences on any entry in
service-keysare now detected at resolve time and resolved through
theopCLI. Existing literal values continue to work unchanged —
fully additive and opt-in per key. Tokens are never logged, output
is always masked, and 5-minute in-memory caching keeps the resolver
cheap.argent secrets backend 1password setup,doctor, and
test <variable>ship with the CLI;argent doctorreports
1Password health only when refs exist. - Pi-bridge cluster closes — pi-ai 0.73.1+ bump (#182) is now
unblocked. Six bridge PRs land in this release (#321, #322, #323,
#324, #327 plus the foundation cluster #299/#308/#309/#310). Argent's
runtime now consumes pi-coding-agent'sAgentSession,Agent.state,
AgentMessage,BashExecutionMessage,supportsXhigh,Transport,
AuthStorage,ModelRegistry,SessionCompactionResult, and the
typeboxTool/Contexttypes through structural bridge interfaces
inpi-bridge/. The next pi-ai bump becomes a routine version-pin
rather than a multi-day migration. - SetupWizard cards derived from the provider seed. The dashboard's
first-run LLM provider cards (anthropic, openai, minimax, zai, local)
are now generated fromsrc/agents/provider-registry-seed.tsat
build time, eliminating the drift between the runtime registry and
the onboarding wizard that #295 catalogued.
TinyFish web toolkit
- TinyFish first-class default —
web_search+web_fetch(PR
#317):
tinyfishjoinsSEARCH_PROVIDERS;resolveSearchProviderpicks
TinyFish whenever aTINYFISH_API_KEYis resolvable (env, dashboard
service-keys, ortools.web.search.tinyfish.apiKey).web_fetch
gains an opt-inbackend: "tinyfish"param that posts JS-heavy or
anti-bot pages throughapi.fetch.tinyfish.ai. CLI wizard surfaces
TinyFish first inpromptWebToolsConfig; dashboard onboarding
reordersSEARCH_PROVIDER_CARDSwith TinyFish at the top labelled
"Free Search & Fetch (Recommended)". Brave + Perplexity remain
fully supported. Strict-Zod gap closed forfirecrawl,readability,
andtinyfishsub-objects so validargent.jsonconfigs are no
longer rejected. 30 tests inweb-search.test.tscover every
smart-default branch, resolver units, and 401 auth-failure transport. - TinyFish Browser API — remote Playwright/CDP session (PR
#325, closes
#320):
Newtinyfish_browser_open/tinyfish_browser_closeagent tools.
openposts toapi.browser.tinyfish.aiand returns
{session_id, cdp_url, base_url}— the agent (or a higher-level
tool) connects viachromium.connect_over_cdp(cdp_url). Argent
itself does not wrap Playwright.closeis acknowledgement-only
(sessions auto-terminate after 1 hour of inactivity; the API has no
explicit delete endpoint). Paid-tier walls surface as
tinyfish_browser_paid_tier_requiredwith an upgrade message; 401
is mapped separately so the agent doesn't suggest an upgrade on
auth failures. 21 tests cover registration, schema, auth, transport,
and error mapping. - TinyFish Agent API — natural-language web automation (PR
#326, closes
#319):
Newtinyfish_agenttool. Operators describe a goal in natural
language plus a starting URL; TinyFish navigates / clicks / fills
on real sites and returns structured results. Optional
max_steps,browser_profile(lite/stealth),screenshots,
snapshots,recording,webhook_url,timeout_seconds.
Hard caps: 500 steps, 600s timeout. New config surface
tools.web.agent.*. Opt-in (defaultsenabled: false) because
Agent is a paid tier. Error mapping forINSUFFICIENT_CREDITS/
paid-feature wall,RATE_LIMIT_EXCEEDED, auth failures, and
client-side timeout. 35 tests covering config, auth, URL guards,
registration, transport, and error mapping.
1Password Service Accounts (first-class secrets backend)
op://references resolved at service-key resolution time (PR
#318):
Per-keyop://Vault/Item/fieldreferences in any service-keys entry
are detected at resolve time and resolved through theopCLI.
Newsrc/infra/onepassword-resolver.tsexposesisOnePasswordRef,
parseOnePasswordRef,maskRef, andresolveOnePasswordRefwith
a 5-minute in-memory cache (TTL configurable per call;ttl=0
disables).OP_SERVICE_ACCOUNT_TOKENis read fromprocess.env
or from argent's encrypted secret store and is never logged or
printed — allopoutput passes throughredactTokenfirst, and
the subprocess env is whitelist-built so unrelated env doesn't leak
intoop. Graceful fallback when theopCLI is absent
(op_cli_missing). New CLI:argent secrets backend 1password setup [--token ops_...] [--migrate-existing],doctor [--sample op://...], andtest <variable>.argent doctorreports a
1Password block only when refs are present, with clear remediation
steps; never fails the parent doctor run. Dashboard exposes
GET /api/settings/service-keys/1password/healthwith the same
probe data (UI toggle is a follow-up). 20 tests cover parse, mask,
redact, token resolution priority, cache TTL boundary (hit / miss
/ttl=0),op-missingfallback, ref detection, and env-fallback
on resolver failure. Ships flavor A (per-key refs) from the
spec; flavor B (globalsecrets.backend = "1password"flag) is a
follow-up.
Pi-bridge cluster (unblocks #182)
The pi-coding-agent 0.70.2+ surface added ~78 private members,
removed replaceMessages, privatized AuthStorage / ModelRegistry
constructors, switched to typebox@1.x, and reshaped
BashExecutionMessage and supportsXhigh. PR #275 / #276 attempted
forward-direction unification (argent's AgentSession impl wrapping
pi's class) and correctly stopped — class extension can't satisfy
private members it doesn't own. This release ships the structural
bridge instead: argent's runtime consumes pi's surface through
interfaces in pi-bridge/ that capture only the public shape
argent reads. Future pi bumps absorb drift at one chokepoint per type.
- Foundation + AuthStorage / ModelRegistry / SessionCompactionResult /
typeboxTool+Context(PRs
#299 /
#308 /
#309 /
#310, partial
#286;
closes #300,
#303,
#305):
Establishessrc/argent-agent/pi-bridge/as the single chokepoint
for argent ↔ pi-coding-agent type identity. Migrates the remaining
AuthStorageandModelRegistrycall sites off direct pi imports;
adds aSessionCompactionResultmapper; bridges the typebox
Tool/Contextsurface so 0.34 → 1.x drift is absorbed in one
place. supportsXhigh+Transportcleanup (PR
#321, closes
#306):
Drift-absorbingsupportsXhigh(model)wrapper in pi-bridge (local
re-implementation, not a re-export — pi 0.73+ removed the named
export and replaced it with
getSupportedThinkingLevels().includes("xhigh")).Transporttype
alias forwards pi's"sse" | "websocket" | "auto"union; audited
src/for the removed"websocket-cached"variant and confirmed
zero occurrences. The two #182-catalogued sites (agent-core/ai.ts
re-export andpi-embedded-runner/run/attempt.ts
resolveOpenAICodexTransport) migrated through the bridge.AgentSessionLikestructural bridge (PR
#323, closes
#301):
pi-bridge/agent-session.tsexposesAgentSessionLikeand
AgentSessionAgentLike— interfaces capturing only the public
surfacepi-embedded-runneractually reads. Both argent's
AgentSessioninterface and pi's class satisfy the read subset;
argent's interface additionally satisfiesagent.setSystemPrompt
(the runtime source is always argent —agent-core/coding.ts
rebindscreateAgentSession→createArgentAgentSession).
attempt.ts:1130TS2352 cast andsystem-prompt.ts:94TS2339
setSystemPrompt-on-Agent error retire. Baseline: 227 → 225.Agent.replaceMessagesmigration (PR
[#324](https://...
v2026.5.6.2 — 18 issue fixes + AOS subctl connector
2026.5.6.2
Second micro release on top of v2026.5.6. 18 issues closed, all bug
fixes, install/update hardening, and ergonomics — no schema changes, no
breaking API changes. Safe drop-in upgrade.
Highlights
- Auto-close-on-dev-merge pipeline is live. Issues referenced with
closes/fixes/resolvesin commits that land ondevnow auto-close,
even thoughdevisn't the default branch. Catches the long-standing
pain of having to manually close issues after PR merges
(#180). - AOS subctl connector lands. Bridges ArgentOS workflows and the AOS
worker harness to subctl
— multi-account AI subscription control plane. Mirrors the
aos-telegramconnector pattern. Read commands work inreadonly
mode; write commands gated behindmode=write(PR #192). - Install + update get serious hardening. Five compound install
fixes: legacypnpmsymlink sweep, postgres@17 restart-not-start +
port-conflict diagnosis withARGENT_PG_REPURPOSE_EXISTINGopt-in,
pg_dumpsnapshot before takeover, dashboardnode_modules/react
postinstall sweep, and dashboard provider-catalog populated from
seed at build time. - Type-identity work continues.
AgentMessage/StreamFnbetween
argent's localpi-typesand@mariozechner/pi-agent-coreare
unified —tscbaseline shrinks 267 → 249. The band-aid in #256
stays as defensive (orthogonal to drift). - Z.AI thinking-only responses surface correctly. Two-layer fix:
fallback retry toglm-4.7whenglm-5*returns empty, plus
adapter-layerreasoning_contentextraction in
openai-completionsso the wasted round-trip goes away over time.
Bug fixes — Install / Update / Gateway
- Legacy pnpm symlink sweep
(#168):
argent updatenow sweeps 7,892+ legacy pnpm symlinks that pointed
at/Users/sem/argentos/(the pre-canonical install path) and
rewrites them to the canonical install root.argent doctor --repair
invokes the same sweep so existing affected installs self-heal in
place. Idempotent. - Postgres@17 already-running handling
(#109):
Hosted installer detectspostgresql@17already running, uses
brew services restart(notstart) so config rewrites actually
take effect, polls psql for 20s after restart, and reports a clear
port-conflict diagnosis with the listener identity if 5433 is held
by something else. Data-loss guard: aborts with a warning if the
existing postgres has user data unless
ARGENT_PG_REPURPOSE_EXISTING=1is set. - Postgres pre-takeover snapshot
(#278):
WhenARGENT_PG_REPURPOSE_EXISTING=1triggers an actual takeover,
pg_dumpallsnapshots the existing data to
~/.argentos/backups/postgres-pre-takeover-<timestamp>.sqlbefore
the port rewrite. Auth-required clusters fail fast (-w) with a
pgpass/PGPASSWORD hint. Any dump failure aborts the takeover and
leaves the port untouched. - Dashboard react symlink postinstall sweep
(#264):
Pre-existingdashboard/node_modules/reactsymlinks that pointed at
removed worktrees (a pnpm hoist artifact) are auto-rewritten by a
postinstall script. Fresh worktrees pass React tests on first
install. Silent on healthy installs. - Dashboard provider-catalog populated from seed
(#268):
dashboard/provider-catalog/index.cjsis now generated from
provider-registry-seed.tsat build time. Previously shipped with
providers: {}, causing the Models page to render blank on
headless launches before the user's~/.argentos/provider-registry.json
existed. 12 providers ship in the fallback.
Bug fixes — Providers / Models / Auth
- Provider registry seed adds zai
(#269):
zaiwas offered in CLI + dashboard onboarding with 8 GLM models in
models-db.ts, butprovider-registry-seed.tshad no entry — so
ensureArgentModelsJsonnever wrote a zai block. Z.AI worked only
via pi-coding-agent's anthropic-compat fallback. Now seeded
directly. SEED_VERSION bumped to 9 so existing installs re-seed. - Chutes reachable from grouped wizard
(#267):
chuteswas in the flatbuildAuthChoiceOptionslist but missing
fromAUTH_CHOICE_GROUP_DEFS, so the grouped wizard couldn't reach
it. Added as a standalone group modeled onqwen. - zai/glm-5-turbo empty response fallback
(#254):
Generalized the empty-response fallback retry to cover
zai/zai-codingproviders. Whenglm-5-turbodefaults to
thinking-on and emits reasoning-only content (a known Z.AI quirk)
via the openai-completions path, the runtime now retries on
glm-4.7rather than surfacing a blank assistant message. - openai-completions surfaces reasoning_content
(#280):
Adapter-layer fix paired with the retry-fallback in #254. When
contentis empty ANDtoolCallsis empty ANDreasoning_content
is non-empty, the openai-completions adapter now uses
reasoning_contentas visible text. Provider-agnostic conditional
gate — OpenAI-proper (always emits content) and tool-call responses
are unaffected.
Bug fixes — Channels / Plugins
- Agent-tag transform extends to all text channels
(#202):
The MOOD/TTS tag transform added in #198 for Telegram + Discord now
also strips/transforms tags for Signal, Slack, iMessage, WhatsApp,
and MS Teams. Channels not covered in core are explicitly
documented in the PR body. - Mood→emoji map via plugin config
(#203):
channels.defaults.agentTags.moodEmojiMapis now a typed,
zod-validated plugin-config field. Plugins can override individual
mood entries or supply a full replacement map for deployment
branding. Empty-string values suppress a default mood.
Case-insensitive keys. Backward-compatible — default map kept for
deployments without overrides.
Bug fixes — UI / Build / CI
- fetchLocalApi migration completes
(#173):
All 23 grandfathered dashboard files migrated from directfetch()
tofetchLocalApi(). INV-2 baseline shrunk to empty — the
invariant now enforces uniformly. ChatPanel's external-URL fetches
(lines 95/136 for blob downloads) correctly preserved. - pi-types unify with pi-agent-core
(#257):
AgentMessage/StreamFn/CustomAgentMessagesnow forwarded
directly from@mariozechner/pi-agent-coreso type identity
unifies across the runtime. Three latent type-soundness fixes
surfaced and corrected:
Extract<AgentMessage, { role: "user" }>after a role filter in
create-agent-session.ts;nullnarrowing inestimateTokens;
onPayload(payload, model)contract inanthropic-payload-log.ts
(pi's contract was always 2-arg). Baseline 267 → 249. Type-only —
no runtime behavior change. - Oxlint shadow-warnings cleared
(#204):
Cleared the 2 oxlint shadow errors in
src/infra/outbound/deliver.ts. 3-line diff with no semantic change. - Oxlint per-rule sweep begins
(#285):
First per-rule safe--fix(no-useless-escape, 12 files, +20/-20).
Methodology fix documented:pnpm exec oxlint -A all -D <rule> --fix
to isolate per-rule changes (the naive-D <rule>flag ADDS to
enabled categories rather than isolating).eslint(curly)found
unsafe in this codebase (defeats TS narrowing on single-statement
guards) — documented in the closed PR #288.
CI / Workflow infrastructure
- Auto-close on dev-merge (#180):
New.github/workflows/auto-close-on-dev-merge.yml. On every push
todev, scans each commit's message for verb-prefixed issue
references (closes/fixes/resolves #N, including multi-issue
groups), and auto-closes them with a back-linked comment. Verb
required, so trailing(#PR-N)squash artifacts don't trigger
false closures. Self-validating cutover: PR #266's own merge
closed#180.
New features
- AOS subctl connector (PR
#192):
Newtools/aos/aos-subctl/module mirroringaos-telegram. Bridges
ArgentOS workflows + AOS worker harness to subctl's HTTP API +
notify shell. Read commands: capabilities, health, doctor,
state.get, orchestration.list/status, notify.inbox. Write commands
(gated): orchestration.spawn/msg/kill, notify.send,
notify.inbox_ack. Configurable viaSUBCTL_APIandSUBCTL_BIN
env vars. No service keys required (subctl is localhost-only).
Known carry-overs
- #276
AgentSession identity unify — deferred to #182 (broader pi-ai bump);
the structural fix touches the widerStreamFn/Agent/AgentSession
cluster simultaneously, not a one-off. - #182
pi-ai 0.73.1+ bump — meta-tracker; intentionally not attempted as a
single-PR task because the current pi-coding-agent API has 78 new
private members onAgentSession, removedreplaceMessages,
privatizedAuthStorage/ModelRegistryconstructors, and switched
totypebox@1.x. Routine bumps ...
v2026.5.6.1 — 29 issue fixes (micro release)
2026.5.6.1
A micro release on top of v2026.5.6. 29 issues closed, all bug fixes and
ergonomics — no schema changes, no breaking API changes. Safe drop-in upgrade.
Highlights
argent updateis fully unblocked. Thetsc --noEmitpre-bundle gate
introduced inv2026.5.6was rejecting updates pastdev.36because its
identity comparison didn't account for tsc's environment-dependent error
message truncation. The gate now uses a path-length-independent fingerprint,
so updates run from any checkout depth.- Install + update hygiene pass. Eight issues that made fresh installs and
in-place updates fragile are fixed: missing LaunchAgents, port-collision
during gateway restart, legacy env vars in the gateway plist, residual
admin surfaces in public Core, doctor inconsistency during transitions,
Google Workspace preflight resolution, gateway-token rotation on update
(now preserved), and localStorage quota issues from cron-jobs cache. - Local-model UX truth-telling. LM Studio dropdown now distinguishes
loaded vs catalog-only models (previously listed everything as if
usable). New "LM Studio Models" section on the Models page parallels
Ollama. Routing-suggestion engine filters to currently-loaded models
only.agent_statusdistinguishes "not-configured" from
"configured-but-down" for Ollama. - Auth that self-heals.
auth-profiles.jsonnow repairs itself when the
orderarray references a missing profile.--set-defaultfor
plugin-backed providers (zai, openrouter, etc.) now actually sticks via
arecommendedModelmanifest field instead of being silently dropped. - AppForge progress. New rating cell field type (star/heart/thumb/flame
glyphs) and click-to-sort grid column headers with visual indicators.
Bug fixes — Update / Install / Gateway
argent updateLaunchAgent install
(#175):
argent updatenow installs missingai.argent.dashboard-uiand
ai.argent.dashboard-apiLaunchAgents for new install paths instead of
leaving them out.argent updategateway-restart cycle
(#155):
Wait for port 18789 to release before restarting the gateway, and let
argent doctordetect transition-state rather than falsely reporting
"Gateway not running" mid-cycle.argent updategateway-token preservation
(#167): Stop
rotatinggateway.auth.tokenon everyargent update. Token rotation
is now gated behind an explicit user action — open sessions don't get
silently invalidated by routine updates.- Legacy plist env vars purged
(#169):
ai.argent.gateway.plistno longer ships withARGENT_GIT_DIRor
ARGENTOS_GIT_DIRpointing at the legacy/Users/sem/argentos
location. New installs get a clean plist. argent doctorplist binary validation
(#172):
argent doctornow validatesai.argent.*.plistBinaryPathagainst
the canonical install location and flags drift.- Google Workspace connector setup
(#128):
Resolvepreflight_gws.pyfrom the package root in the installed CLI
rather than the source tree — setup no longer 404s on installed
Argent. - Public Core admin-surfaces hidden
(#105):
Public Core dashboard no longer exposes the residual internal/admin
surfaces (broken routes that previously rendered a confusing 404 in
the sidebar). - Dashboard cron-jobs cache quota
(#157):
Cap the cron-jobs localStorage cache to preventQuotaExceededError
on accounts with long heartbeat history.
Bug fixes — Models / Providers / Auth
--set-defaultfor plugin-backed providers
(#190):
argent models auth login --set-default --provider <zai|openrouter|...>
now actually sets the default model. Previously honored only for
openai-codex; other providers silently dropped the flag.- auth-profiles.json self-heal
(#193):
argent agentno longer throwsNo API key found for provider 'openai-codex'whenauth-profiles.jsonhas a valid profile but an
orderarray pointing at a missing alias. The store now self-repairs
on load. - LM Studio loaded vs catalog
(#220):
The LM Studio model dropdown now lists currently-loaded models, not
the full catalog. Catalog entries no longer mislead users into
selecting a model that isn't actually loaded in LM Studio. - LM Studio Models page parity
(#219):
Models page now has an "LM Studio Models" section parallel to the
"Ollama Models" section instead of asymmetric coverage. - Routing suggestion filter
(#218):
The routing-suggestion engine no longer recommends unloaded LM Studio
models or Ollama models when Ollama is down. - agent_status reflects configuration
(#214):
agent_statusnow distinguishes "not-configured" from
"configured-but-down" for Ollama so DOWN messages aren't shown for
providers the user never set up.
Bug fixes — Channels / Telegram / Discord
- MOOD/TTS tag leak fix
(#198):
Agent[MOOD:X]and[TTS:Y]tags no longer leak into Telegram and
Discord channel output as raw text. They are stripped from outbound
text and translated into channel-appropriate metadata where supported. - Telegram 409 logging + UX
(#194):
argent-gatewaynow includes the bot ID in 409-conflict logs and
surfaces a persistent-conflict UX warning so users see which bot is
fighting for the long-poll lock when there are multiple bots
configured.
Bug fixes — UI / Chat
- Re-auth command preserved in chat error
(#224):
When an OAuth token is invalidated mid-chat, the error message now
includes the literal re-auth command (e.g.
argent models auth login --provider openai-codex) so the user can
copy-paste rather than guess. - Personal skills promotion
(#210):
promoteCandidatenow incrementsrecurrenceCounton dedup-skip so
the "promoted" bucket fills correctly. Previously, repeat invocations
of the same candidate were treated as no-ops and the bucket stayed
empty. - Connectors catalog popup spam
(#152):
Cache theconnectors.catalogprobe so the Settings → System tab
stops triggering a node popup every render.
Bug fixes — Build / Type / CI
- tsc-since.mjs identity hardening (this release's headline,
#255):
tsc's per-message length cap truncates error tails with...'based
on the un-elided string length, which differs by checkout path.
argent update's preflight worktree at/private/var/folders/.../
has paths ~50 chars longer than the baseline-snapshot worktree at
/Users/sem/code/argent-core/worktrees/<name>/, so the same
conceptual error got truncated at a different point and missed the
baseline as net-new. The fix collapses'import("…")…'blocks to a
stable placeholder during normalization, making identity
path-length-independent. - tsc pre-bundle gate added
(#178):
Runtsc --noEmitbeforetsdownbundles, comparing against a
267-entry baseline atops/known-failing.json. Catches net-new type
errors before they reachdist/. - Bundle emits composio + builtin-profiles
(#196):
tsdownnow emitsdist/connectors/composioand
dist/models/builtin-profiles. These features were dead at runtime
because the bundler was skipping them. - pi-embedded-runner symlinked worktrees
(#211):
tsconfig.jsonresolution now works when type-checking from a
worktree whosenode_modulesis a symlink (the common bump-worktree
case). - Worktree-aware pre-commit hook
(#176):
Pre-commit hooks no longer fail in bump worktrees that lack their
ownnode_modules. The hook resolvesoxfmtfrom the canonical
install instead of requiring a per-worktree symlink. - Label-issues workflow auth fix
(#199):
UseGITHUB_TOKENfor the label / label-issues workflow instead of
the broken GitHub App private-key secret. Stops the workflow from
failing on every PR.
Refactors
isHeadlessSessionconsolidation
(#206):
isHeadlessSessionnow delegates toisRemoteEnvironmentwith a
documented override, removing duplicate detection logic.
Documentation
ArgentOS Core 2026.4.30
2026.4.30
Highlights
- A more reliable personal AI operating system. This release promotes the
active Core dev line to the publicmainbranch, bringing the newest
gateway, workflow, dashboard, memory, connector, and installer improvements
into one stable release. - Workflows now feel closer to an operator-ready automation surface. The
canvas has better run visibility, JSON/YAML import/export, owner-operator
templates, richer binding reports, connector-backed destinations, approval
records, run history, and clearer failure feedback. - Reminders become part of the schedule system instead of a separate timer
stack. Schedule items can now carry reminder intent and delivery targets,
including in-app, voice, Telegram, Slack, email, and DocPanel routes where
configured. - AppForge and Argent Tables move toward a true personal workspace builder.
The shell now supports more honest Live/Preview/Declaration labels, native
base and table onboarding, typed field editing, saved table views, record
add/edit/delete flows, and reload-persistence proof. - AOS connectors get a large service-key-first expansion. Core now includes
readiness metadata and harness-backed connector work across tools such as
Slack, Teams, Discord Workflow, Airtable, Buffer, Hootsuite, Monday, Zapier,
WordPress, n8n, HubSpot, Make, PayPunch, CallScrub, and more. - Realtime voice and browser automation foundations move forward. This
includes browser diagnostics, OpenAI Realtime adapter support, local audio
smoke tools, operator voice-alert routing foundations, and Google Meet
setup/status plus browser-only recovery for already-open Meet tabs.
Changes
- Gateway/runtime: pin LaunchAgent and bundled service execution to the
selected Node 22 runtime, reducing native module mismatches and making update
behavior more predictable across local machines. - Gateway status: stop warning about unrelated LaunchAgents as if they were
duplicate gateways; status output now focuses on actual gateway-like services. - Workflow scheduling: new scheduled workflow copies start inactive by
default, and validation warns when multiple active workflows share the same
cron expression and timezone. - Workflow payloads:
podcast_generatewiring is now validated so missing
or incorrectly shapedpodcast_planpayloads are caught before a bad workflow
run creates confusing output. - DocPanel output hygiene: placeholder object envelopes such as demo
name/bodypayloads are rejected instead of being saved as operator-facing
documents. - Changelog intelligence: agents can now see changelog context directly,
making it easier for them to answer what changed without guessing from memory. - Memory readiness: memory recall and category cleanup now surface thinner
or degraded evidence more honestly, so agents can report when memory context
is unavailable instead of pretending it worked. - Personal skills and agent family defaults: coding-family skill mappings
and persona defaults are now more auditable, with clearer provenance for
promoted behavior. - Security readiness: marketplace tool claims now require evidence, security
audit coverage is broader, and failed memory recall is treated as degraded
evidence instead of a silent success. - Telegram stability: repeated polling ownership conflicts are guarded
against so duplicate pollers stop instead of fighting the same bot token. - Z.AI subscriptions: operators can choose General/API or Coding subscription
endpoints withmodels.providers.zai.baseUrl; ArgentOS appends
/chat/completionswhen needed and applies the override to built-in,
fallback, and discoveredzai/*models.
Fixes
- Fixed noisy DocPanel artifacts from workflow result envelopes.
- Fixed duplicate Telegram pollers and repeated Telegram ownership conflicts.
- Fixed false gateway-health warnings after updates and restarts.
- Fixed Node-version drift that could break native modules such as
better-sqlite3after local runtime changes. - Fixed model-drift blind spots by exposing requested model, allowed model, and
allowlist diagnostics when a subagent model patch is rejected. - Fixed workflow duplicate scheduling behavior that could let morning workflow
variants overlap unexpectedly. - Fixed A2UI missing-asset behavior so the canvas host no longer ships a blank
or confusing surface when the bundle is unavailable.
Testing Notes
- Workflows: test import, save, reload, bind, validate, schedule, Run Now, and
failure inspection with the Daily Marketing Brief, VIP Email Alert, Client
Onboarding, Operations Cleanup, Newsletter Builder, and podcast templates. - Reminders: test one-time and recurring reminders through the Schedule surface;
routes should report delivered, skipped, or config-missing rather than
silently failing. - AppForge/Argent Tables: test Create Base -> Create Table -> Add Field -> Add
Record -> Edit Record -> Delete Record -> Reload. - AOS: configure service keys before expecting live connector reads or writes.
Harness tests cover the connector packets, but most production accounts still
need operator-specific smoke tests. - Realtime voice: set
OPENAI_API_KEYbefore live realtime voice smoke. Google
Meet recovery requires a signed-in Chrome profile and an already-open Meet
tab; create/join/leave remain follow-up work.
Known Gaps
- Workflow browser smoke remains the main gate before calling the full canvas
broadly operator-ready. - AppForge is not yet a full TableForge/Airtable replacement; relational fields,
permissions enforcement, connector-backed tables, interface building, and deep
automations are still follow-up work. - AOS connector claims are truth-labeled from manifests and harness tests; live
external-account smoke tests still require operator credentials. - Browser voice control has a gateway/API substrate, not a finished dashboard
voice button yet. Remote WebRTC browser smoke and Gemini/Google Live provider
parity remain follow-up work. - The Rust gateway remains in shadow mode; TypeScript remains the live gateway
authority until parity, restart recovery, and protocol drift checks are proven
over time.
v2026.4.25.2
Supplemental patch for the April Core stabilization release.
Fixes:
- Backports Z.AI provider endpoint selection to main.
- Preserves explicit Z.AI General vs Coding API lane URLs during model compatibility normalization.
- Updates public docs and the bundled Obsidian docs mirror with the Coding subscription setup.
- Aligns package and bundled extension metadata to 2026.4.25.2.
Verification:
- pnpm vitest run src/agents/pi-embedded-runner/model.test.ts src/agents/model-compat.test.ts src/argent-ai/providers/zai.test.ts
- pnpm release:check
- pnpm docs:vault:check
- pnpm protocol:check
v2026.4.25.1
April Core stabilization release
This release moves the last several days of Core stabilization work onto the stable update rail. It is bigger than the short changelog summary: the range from v2026.4.18.3 to v2026.4.25.1 includes Marketplace becoming a real Core capability, the public install/update path being repaired, Core dashboard surfaces being restored, a large docs vault being published, provider routing fixes, migration tools, and the first observable Rust shadow runtime lane.
Marketplace and Core tools
- Marketplace is now a first-class Core tool surface, not a docs-only or legacy skill path.
- Marketplace browse/install claims now require real marketplace evidence, preventing the agent from claiming package availability without tool-backed proof.
- Legacy ClawHub paths were retired from the Core tool flow in favor of
argent marketplace. - Marketplace package installs now support connector harnesses.
- Cognee ships as an AOS Core connector with a machine-readable connector artifact and runtime validation.
- Personal Skills are visible in public Core again.
- Core family agents are exposed without requiring manual subagent allowlists.
- Public Core tools now default to allowed unless the operator explicitly denies or marks them ask-first.
Install, update, and release rail
- Hosted installs now stay outside pnpm workspace resolution, keep clean source checkouts, and identify the current Core build correctly.
- Stable, beta, and dev update channels resolve more consistently from source checkouts.
argent updatenow repairs runtime snapshot drift, avoids removing live chunks, rebuilds dashboard bundles when needed, and restarts dashboard/gateway services after public updates.- Post-update doctor now runs through the fresh CLI so repairs happen against the updated code.
- Skipped-version updates can still apply safe repairs.
- Added
scripts/out-of-sync-patch.shfor installs stuck on a pre-fix update runner. - Release checks now agree with generated protocol artifacts and docs-vault metadata.
- The signed Mac app/public release rail was kept intact, and a false “argent CLI not found in PATH” warning in the macOS app was fixed.
Dashboard and setup experience
- Public Core installs now default to the public Core dashboard surface instead of accidentally exposing full/Business-only controls.
- Core Settings navigation was restored, including Operations, Vault, MemU, Personal Skills, service-key policy routes, and other Core-safe panels.
- Advanced Config tabs are hidden by default behind an Advanced toggle.
- Setup wizard auth tiles gained Groq and Kimi K2 options, plus direct “Get your key” docs links.
- First-run model selection and dashboard model dropdowns now use fresher live catalog data.
- Dashboard status now tracks Core runtime config more accurately.
- Pi/LAN dashboard access was improved with CORS, Vite host filtering, and an opt-in Pi AEVP profile.
Models, providers, and media handling
- Automatic reasoning, routed defaults, fallback streams, and Deep Think now stay on configured compatible providers instead of silently falling back to unconfigured Bedrock or Anthropic paths.
- Deep Think honors the powerful model tier.
- MiniMax and GLM routing were kept on compatible runtime paths.
- Stale MiniMax configs no longer break Anthropic routing.
- Image fallback has more time to describe attachments and can use MiniMax auth profiles.
- Pi streaming was hardened against partial-stream crashes.
- Malformed transcript state and compaction summaries are normalized before model calls.
- Tool-event WebSocket broadcast is decoupled from verbose logging level.
- Prompt-budget diagnostics were added as an opt-in audit path.
Migration, credentials, and service keys
- Added
argent migrate exportandargent migrate import. - Migration export now includes models, workspace-specific data, nudges, license state, cron jobs, widgets, and env secrets where appropriate.
- Runtime provider keys now use the auth storage API.
- Connectors can use Argent service keys at runtime.
- Encrypted service-key recovery is more resilient when master keys are available.
- Channel setup now saves usable allowlists.
Memory, database, and runtime repairs
- Core startup repairs Postgres schema drift and memory entity-link schema drift.
- Memory timeline handling now tolerates undefined entity names.
- Hosted git status reports from the source checkout correctly.
- Core kernel, screenshots, Vault, and MemU surfaces were kept usable in public Core.
Docs and operator visibility
- Published the expanded public Core docs mirror and local operator docs vault.
- Added docs for update distribution, Core/Business boundaries, Rust shadow runtime, provider setup, gateway behavior, channels, workflows, and troubleshooting.
- Stabilized docs-vault generation so generated metadata does not drift on repeated checks.
- Added release-readiness and stabilization incident notes for the April Core lane.
Rust shadow runtime
- Added the Rust executive shadow runtime as an observable, contract-tested lane without promoting it ahead of the Node gateway.
- Status reporting now surfaces executive-shadow state.
- Gateway cleanup warnings no longer fire on expected Rust shadow processes.
- Startup waits for shadow services to report running before treating them as ready.
Security and trust boundaries
- Public Core/Business boundaries are documented and enforced in the dashboard surface.
- Marketplace tool-call blocks are validated so fake marketplace evidence is rejected.
- Service-key policy modules are packaged for dashboard API use.
- Secret scanning CI passed for the release-prep PR.
MCP and integrations
- MCP OAuth well-known discovery paths no longer fall into the root-mounted Control UI HTML fallback, so external MCP clients can reach
/mcpcleanly. - Connector catalog/runtime checks were tightened.
- Native Telegram command coverage and channel setup behavior were improved.
Release scope note
This GitHub release publishes the source/tag release consumed by the stable source-checkout update rail. No notarized macOS .dmg or .zip assets are attached to v2026.4.25.1 yet; macOS app packaging remains a separate artifact step.
v2026.4.18.3
Summary
This release ships a major upgrade to the Argent macOS app and Core runtime, including Personal Skills, a cleaner Core Intent experience, and a more stable day-to-day local runtime. The result is a sharper operator experience, better learned behavior over time, and a signed/notarized Mac app release that is ready to install.
Highlights
-
Personal Skills
Argent can now learn operator-specific procedures as reusable Personal Skills. These skills can be captured from real work, reviewed, reinforced through successful usage, and surfaced back into runtime behavior so the system gets more aligned over time. -
Intent Lite for Core
Core now includes the slimmed-down Safety Rules intent experience, giving operators a simpler, more approachable control surface without requiring the full advanced governance console. -
macOS App Improvements
The Swift menubar app has been rebuilt and shipped as a signed and notarized release. This update improves launch reliability, menu bar behavior, dashboard access, and local gateway attachment.
Improvements
- Improved Personal Skill lifecycle behavior, including candidate review, procedural structure, usage reinforcement, and decay.
- Improved runtime handling of learned operator procedures so relevant Personal Skills can influence execution more consistently.
- Improved packaged macOS app connection behavior when local auth state has gone stale.
- Improved dashboard/settings experience for Core operators with the restored Safety Rules surface.
Fixes
- Fixed packaged macOS app left-click/menu bar behavior.
- Fixed stale packaged-app gateway auth fallback so local reconnects recover more reliably.
- Fixed false-positive gateway restarts when toggling the consciousness kernel.
- Fixed assistant crash paths that could surface as
Cannot read properties of undefined (reading 'filter')during normal conversation. - Fixed several release-lane stability issues in the local runtime and dashboard path.
macOS Release
- App:
Argent - Bundle ID:
ai.argent.mac - Signed with:
Developer ID Application: Jason Brashear (F2DH8T4BVH) - Notarized and stapled
Install / Update
- GitHub release: https://github.com/ArgentAIOS/argentos-core/releases/tag/v2026.4.18.3
- Website installer manifest: https://argentos.ai/releases/macos/latest.json
- Website artifact: https://argentos.ai/releases/macos/2026.4.18.3/Argent-2026.4.18.3.zip