agentos

framerslabApache-2.0活跃维护

基于 TypeScript 的 AI Agent 框架,提供认知记忆、动态人格、涌现行为和自构建设计,让自主智能体具备长期记忆与个性演化能力。

TypeScript AI agent framework: cognitive memory, dynamic personalities, emergent behaviors and self-building designs

v0.15.122发布于 2026-11-10 00:36 UTC686star +1 / 7 天104fork同步于 2026-11-10 11:56 UTC

怎么上手

由 README 提炼,执行前请确认
npm install @framers/agentos
硬件要求按 README 说明

README 未说明硬件要求,仅提及通过 13 家 LLM 提供商调用云端模型

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

TypeScript AI Agent 框架,让智能体拥有持久认知记忆、可自我锻造工具并支撑长会话

基于 TypeScript 的 AI Agent 框架,提供认知记忆、动态人格、涌现行为和自构建设计,让自主智能体具备长期记忆与个性演化能力。

核心能力

  • 用艾宾浩斯衰减等 8 种神经科学机制实现持久认知记忆
  • 运行时锻造工具:写 JS 函数并通过测试与 LLM 评审后加入工具列表
  • 可选 HEXACO 人格向量,影响提示词与记忆编码强度
  • 统一 dispatch 接口接入 13 家 LLM 提供商
  • 会话默认保留约 120K token 历史,可关闭或自定义上限

容易踩的坑

代码模式锻造工具默认关闭,需宿主设置 emergentConfig.allowSandboxTools 才启用;默认 node:vm 沙箱不是安全边界,需隔离应改用 QuickJSExecutor;认知记忆与情感追踪需设置 runtime: 'gmi' 才生效

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.15.122
  1. v0.15.122最新正式版2026-11-10 · 2026-11-10 00:36 UTC

    0.15.122 (2026-11-10)

    Bug Fixes

    • gmi: pass the persona's cognitiveMemoryConfig.tokenBudget to the memory manager (b8ecc4b)
    • memory: a trace section keeps its trace when the association that would show it pushes out a Related Context line (9394082)
    • memory: createAgentCognitiveMemory passes the persona's encoding, decay, capacity, observer, reflector, graph and infinite-context settings (77c2b51)
    • memory: GMIManager normalizes every persona a loader returns, a host loader's included (2b18c51)
    • memory: keep a trace in the block when the second pass gives it up and Related Context left its association out (fc0314f)
    • memory: keep migrated MEMORY.md text across catalog writes, and never throw on a failure reason (4678762)
    • memory: leave out of Related Context an association to a trace the block already holds (f861167)
    • memory: persona loaders drop null memory settings; a null share keeps its default (b17bf58)
    • memory: run the second pass again after Related Context gives up a duplicate, so its room is spent (5830b7d)
    • memory: the second pass only adds to the memory block (1765b8a)
    • personas: a non-array metaPrompts takes the presets and is reported (6375c3b)
    • personas: non-array sentiment presets merge nothing and are reported; one bad host persona never stops the load (240f233)
    • personas: report a metaPrompts the sentiment presets replaced as invalid_metaprompts (4cb3b4d)
    • personas: skip an unreadable host persona; report null sentiment presets (d469f73)
    • personas: the file PersonaLoader's copies keep the replaced metaPrompts record (983ecf2)
    • souls: date compiled pages, log soul and memory failures, keep recall to its budget, keep migrated MEMORY.md text (a26450a)
    • souls: quote an end marker inside MEMORY.md, keep recall to a zero budget and whole characters, and log failure reasons as text (530b499)
    • voice: class spent-credit answers as quota and timeouts as network (b024411)
    • voice: read a failure's numeric status when classing it (e5c591b)
  2. v0.15.1212026-11-09 · 2026-11-09 10:35 UTC
    查看更新说明

    0.15.121 (2026-11-09)

    Bug Fixes

    • api: a Claude model on OpenRouter gets JSON mode when its strict schema exceeds Anthropic's union limit (#743) (a0f8ee6)
    • memory: a blank line in working memory no longer ends the section (68867d8)
    • memory: a zero share turns its section off, undefined keeps the default, report the shares used, keep graph associations whole, cut by code point, skip items that do not fit, and count ages in calendar days (5e2dbc6)
    • memory: an involuntary memory too long for its tenth takes what the sections leave unspent (1b211be)
    • memory: leave the date out for a stored time a Date cannot hold (74c262d)
    • memory: spill unspent budget back to earlier sections, reserve room for an involuntary memory, and guard shares and short cuts (55ccf65)
    • memory: the memory block renders recalled traces whole, counts ages in days with the date, and spends the budget empty sections leave (43094d9)
    • memory: working memory ends at its first slot that does not fit, keeping its leading slots (c27c429)
  3. v0.15.1202026-11-08 · 2026-11-08 20:19 UTC
    查看更新说明

    0.15.120 (2026-11-08)

    Bug Fixes

    • api: an excluded model skips a gateway leg in every spelling, and the completion gateway sends a leg on its entry's own credentials (#738) (b4e2285)
    • api: optional fields on a strict json_schema payload are nullable, and a null there reads as absent (#740) (04a534a)
    • discovery: embed the capability index in batches, not one request per capability (#742) (3c0fe01)
  4. v0.15.1192026-11-07 · 2026-11-07 22:39 UTC
    查看更新说明

    0.15.119 (2026-11-07)

    Features

    • language: a transcript translator on generateText and a per-participant LiveKit translation output (1a81996)

    Bug Fixes

    • hearing: a send or a replay from inside encode waits for the line being encoded, as a write does (8e866e6)
    • hearing: a translation write whose encode throws rejects its promise instead of throwing at the caller (5fd9ddb)
    • hearing: a write from inside encode waits for the line being encoded, so the ledger holds finished lines alone and sends keep number order (d84dda3)
    • hearing: give the encode option a copy of the line, so an encode that changes its argument changes no send or replay (807b866)
    • hearing: keep a line before its encode runs, so a write made from inside encode takes the next number (1088abe)
    • language: a Chinese code's region names its script for the same-language skip, so a zh-CN line is translated for a zh-TW reader (4c08b9d)
    • language: a lost success body keeps its 200 on the failure, and a result names the model the call sends (4d49725)
    • language: a retried failed Responses result's tokens reach the answer or the error the call ends with; a timeout's error carries earlier attempts' tokens and is recorded at the bound; what encode asks for runs before the write that encodes returns, in the order asked (89f570e)
    • language: a timeout's error counts the attempts that went unanswered before it, and a line written to nobody is numbered and kept for its replay (6f0095e)
    • language: compare a line's source with the target without case or region, and read a status send's topic when it is called (62ebf55)
    • language: count an attempt whose success status came and whose body was lost as unanswered, so its possible bill is recorded at the bound (3e3a48e)
    • language: count the tokens a retried error reported in the call's usage, and run a reasoning model at effort low with 1,024 tokens of room under its cap (3b14790)
    • language: end a translation at its timeout while the provider starts, record unanswered attempts and a failed call's usage, refuse a filtered answer, and copy a write when it is made (750c2b3)
    • language: read an answer that reported no usage as no report, so its call is recorded at the bound (f0c8b64)
    • language: read the model in the bound as the call reads it, so a prefixed model is priced and another provider's is refused (263ae3f)
    • language: refuse a maxAttempts that is not a whole number of 1 or
  5. v0.15.1182026-11-07 · 2026-11-07 20:45 UTC
    查看更新说明

    0.15.118 (2026-11-07)

    Features

    • personas: renderPersonalityDirectives gives the directive each trait renders (78b5103)

    Bug Fixes

    • personas: the section reads the register once, so writing lines keep their grounding rule (4fb36a5)

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    AgentOS · TypeScript AI Agent Framework

    Agents that remember, forge their own tools, and survive long-running sessions. Persistent cognitive memory, optional HEXACO personality, multi-agent orchestration, and one dispatch interface across 13 LLM providers. Apache-2.0.

    npm CI tests codecov TypeScript License NVIDIA Inception LongMemEval-S LongMemEval-M agentos-bench Discord

    Benchmarks * Website * Docs * npm * Discord * Blog


    AgentOS is an open-source TypeScript framework for AI agents that remember, adapt, and write their own tools.

    • Top open-source memory benchmarks: 85.6% on LongMemEval-S at $0.0090/correct (gpt-4o and gpt-5-mini readers, routed per question type), and 70.2% on LongMemEval-M, the only open-source library above 65% on M with reproducible methodology.
    • Runtime tool forging. An agent writes a JavaScript function with JSON Schemas for its input and output, the declared test cases run it, an LLM judge reviews the result, and on approval the tool joins the session's tool list. Forged code runs in an in-process node:vm context or, with QuickJSExecutor, in a QuickJS WebAssembly instance of its own for each call.
    • Persistent cognitive memory with Ebbinghaus decay and 8 neuroscience-backed mechanisms, among them retrieval-induced forgetting, reconsolidation and source-confidence decay.
    • Optional HEXACO personality, 7 orchestration strategies, guardrails, and voice across 13 LLM providers; 100+ extensions and 88 skills ship as separate packages with registries that load them.

    Install

    npm install @framers/agentos
    
    import { agent } from '@framers/agentos';
    
    const tutor = agent({
      provider: 'anthropic',                          // resolves to claude-sonnet-4-6 (provider default)
      // model: 'claude-opus-4-8',                    // pin a specific model to override the default
      instructions: 'You are a patient CS tutor.',
      personality: { openness: 0.9, conscientiousness: 0.95 },
    });
    
    // Provider auto-detected from env when `provider` is omitted.
    // Cognitive memory, sentiment tracking and metaprompts: runtime: 'gmi' (see GMIs below).
    
    const session = tutor.session('student-1');
    await session.send('Explain recursion with an analogy.');
    await session.send('Can you expand on that?'); // remembers context
    

    Full quickstart * Examples cookbook * API reference

    Sessions. A session keeps the whole conversation whether memory is on or off: each send() records its tool calls, their results and the model's signed thinking, and every later request replays them. stream() records its turn as the prompt and the final text (with runtime: 'gmi', every step, as send() does). History is capped at about 120K tokens by default. Set history: false for a stateless session, set history: { maxTokens } to change the cap, and call reseed() to replace the history with a shorter set of messages you build yourself. close() ends a session and frees its history: the next session(id) with that id starts empty, and agent.usage(id) still reports what the id spent.

    const stateless = agent({ model, memory: false, history: false }).session('job-1');
    const bounded = agent({ model, history: { maxTokens: 60_000 } }).session('job-2');
    bounded.reseed([{ role: 'user', content: 'compact resume snapshot' }]);
    

    Emergent Design

    Three things accumulate across a session and compose into behavior: memory (what was said, decided, retrieved), the tool surface (which grows when an agent forges a tool the judge approves), and an optional HEXACO personality vector that shapes the prompt and scales memory encoding. Each is configurable and observable.

    Runtime tool forging. When no tool covers a sub-task, the agent calls forge_tool with a chain of existing tools or a JavaScript function, JSON Schemas for input and output, and test cases. Code mode is off until the host sets emergentConfig.allowSandboxTools. Source that uses eval, require or process is rejected before it runs. Forged code runs in an in-process node:vm context by default, with a 5 s timeout, and node:vm is not a security boundary; with QuickJSExecutor, each call runs in a QuickJS WebAssembly instance of its own with its memory limited. A separate LLM judge reviews the candidate with its test results, and an approved tool joins the session's tool list. A forged tool exports as a SKILL.md skill. Emergent capabilities ->

    HEXACO personality (optional). Off by default. agent() writes the trait values into the system prompt as directives, one for each trait above 0.65 or below 0.35. A cognitive memory manager given the same traits scales its encoding and seven of its eight mechanisms by them, and an AgentGraph branches on a trait with addPersonalityEdge(). HEXACO docs ->

    Soul files. Identity, voice, hard limits, and HEXACO scores can live in a SOUL.md workspace. Its memory/ directory is a markdown wiki (an index.md catalog plus entities/, concepts/, log/ pages with [[wikilinks]]) that is the agent's long-term memory: markdown is the source of truth, the vector/graph index is rebuilt from it, and souledAgent() wires it end to end. Soul Files ->

    import { souledAgent } from '@framers/agentos';
    
    const aria = await souledAgent({ provider: 'anthropic', soul: '~/.agentos/agents/aria' });
    

    Generalized Mind Instances (GMIs)

    On the full runtime, every session is served by a GMI: a persistent agent with its own persona, mood, conversation history and reasoning trace; with agent({ runtime: 'gmi' }) an agent's sessions are GMIs too. agent() without runtime: 'gmi' is the lightweight helper; it calls the model with a prompt and keeps session history. A GMI of the full runtime runs a turn loop around the same model, tools, guardrails and cognitive memory:

    • Sentiment → metaprompts. When a persona enables sentiment tracking, every user turn is scored; sustained frustration or confusion fires recovery metaprompts, and a self-reflection metaprompt re-reads the GMI's mood and task context from evidence.
    • Mood-weighted memory. With cognitive memory attached, each exchange is encoded with the GMI's current mood and recalled with emotional congruence in the score.
    • Self-modification tools. With selfImprovement.enabled, the runtime registers adapt_personality, manage_skills, create_workflow and self_evaluate; adapt_personality changes the running GMI's traits within bounds, and a mutation store records the changes when a storage adapter and persistWithDecay are configured.
    • A reasoning trace of the last 500 decisions by default (reasoningTraceConfig on the persona or the runtime's default), and persona overlays per session.
    import { AgentOS, AgentOSResponseChunkType, BUILT_IN_PERSONAS } from '@framers/agentos';
    
    // AgentOS.create() reads persona files from ./personas by default. Personas can
    // also be given inline, as parsed JSON or code-built objects; here, the five the
    // package ships. A custom loader covers any other source.
    const agentos = await AgentOS.create({ personas: BUILT_IN_PERSONAS });
    for await (const chunk of agentos.processRequest({
      userId: 'user-42', sessionId: 'research-q1', selectedPersonaId: 'v_researcher',
      textInput: 'Summarize the open incidents from this week.',
    })) {
      if (chunk.type === AgentOSResponseChunkType.TEXT_DELTA) process.stdout.write(chunk.textDelta);
    }
    

    agent({ runtime: 'gmi' }), also exported as gmi(), builds its GMIs in process from the agent's options, with no AgentOS runtime. Of the parts above, these GMIs run the reasoning trace, the mood-weighted memory when memory is on, and sentiment tracking with the five preset event metaprompts (frustration recovery, confusion clarification, satisfaction reinforcement, error recovery and engagement boost) when their profile turns them on. The 'full' profile turns on cognitive memory, sentiment tracking and those five metaprompts; 'light', the default, keeps the reasoning trace and adds memory only when memory is set. The self-reflection metaprompt, the self-modification tools, persona overlays and the runtime's guardrails, retrieval and channels do not run on this path. This tutor's GMIs run every part this path has:

    import { agent } from '@framers/agentos';
    
    const tutor = agent({
      runtime: 'gmi',
      cognition: 'full',
      provider: 'openai',
      instructions: 'You are a patient CS tutor.',
      memory: { embedding: { provider: 'openai' } }, // cognitive memory embeds with text-embedding-3-small
    });
    const session = tutor.session('student-1', { userId: 'student-7f3a' }); // memory is scoped to the user id
    await session.send('Explain recursion with an analogy.');
    

    What a GMI adds over a plain agent →


    Memory Benchmarks

    Both headline results use a per-category reader router (gpt-4o answers temporal-reasoning and single-session-user questions, gpt-5-mini the other four types), with the gpt-4o-2024-08-06 judge, full N=500, single-CLI reproduction with bootstrap 95% CIs and per-benchmark judge-FPR probes.

    • LongMemEval-S: 85.6% at $0.0090/correct, 3,558 ms p50. With gpt-4o reading every question, the same retrieval scores 84.2%, level with Mastra OM with a gpt-4o actor (84.23%; Mastra uses gemini-2.5-flash as its observer and reflector); Mastra OM reports 94.87% with a gpt-5-mini actor. Full table and methodology: LEADERBOARD.md.
    • LongMemEval-M: 70.2% (1.5M-token haystacks, 500 sessions): the only open-source library above 65% on M with reproducible methodology.

    Full leaderboard -> * Transparency audit -> * LongMemEval paper (Wu et al., ICLR 2025)


    Why AgentOS

    vs.AgentOS differentiator
    LangChain / LangGraphCognitive memory (8 neuroscience-backed mechanisms), HEXACO personality, runtime tool forging
    Vercel AI SDKMulti-agent teams (7 strategies), 7 vector backends, guardrails, voice/telephony, zero-config prompt caching
    CrewAI / MastraUnified orchestration (DAGs + graphs + missions), personality-driven routing, published reproducible numbers on LongMemEval-S (85.6%) and LongMemEval-M (70.2%) with full methodology disclosure

    Full framework comparison ->


    Key Features

    CategoryHighlights
    LLM Providers13 (11 by API key or base URL + 2 local CLI): OpenAI, Anthropic, Gemini, Groq, Ollama, OpenRouter, Requesty, LiteLLM, Together, Mistral, xAI, Claude CLI, Gemini CLI. Plus image/video/audio generation providers.
    Prompt CachingZero config on every provider: automatic Anthropic breakpoints incl. multi-turn history (direct + OpenRouter) * OpenAI cache-key routing * normalized cache usage + leak detection * per-call TTL, prefix-only and opt-out * guide
    Cognitive Memory8 mechanisms: reconsolidation, retrieval-induced forgetting, involuntary recall, FOK, gist extraction, schema encoding, source decay, emotion regulation
    HEXACO Personality6 traits modulate memory, retrieval bias, response style
    GMI RuntimePer-session persona, mood and reasoning trace * sentiment-triggered metaprompts (opt-in per persona) * mood-weighted memory bridge * bounded adapt_personality trait changes (opt-in)
    RAG Pipeline7 vector backends * 4 retrieval strategies * GraphRAG * HyDE * Cohere rerank-v3.5
    Multi-Agent Teams7 coordination strategies * manager delegation and specialist spawning * model pools with seating policies and strict per-seat credentials * a panel strategy with a provider and vendor quorum * HITL approval gates
    Orchestrationworkflow() DAGs * AgentGraph router, personality and discovery edges * mission() graphs from plan templates * checkpointing in memory or in SQLite and Postgres (SqlCheckpointStore)
    Guardrails6 packs (PII, ML classifiers, topicality, code safety, grounding, content policy)
    Emergent CapabilitiesRuntime tool forging * 4 self-improvement tools * tiered promotion * skill export
    Voice & TelephonyElevenLabs, Deepgram, Whisper * Twilio, Telnyx, Plivo
    Channels37 platform adapters (Telegram, Discord, Slack, WhatsApp, webchat, ...)
    ObservabilityOpenTelemetry * usage ledger * cost guard * circuit breaker

    Multi-Agent in 6 Lines

    import { agency } from '@framers/agentos';
    
    const team = agency({
      strategy: 'graph',
      agents: {
        researcher: { provider: 'anthropic', instructions: 'Find relevant facts.' },                            // -> claude-sonnet-4-6
        writer:     { provider: 'openai',    instructions: 'Summarize clearly.', dependsOn: ['researcher'] },   // -> gpt-4o
        reviewer:   { provider: 'gemini',    instructions: 'Check accuracy.',    dependsOn: ['writer'] },       // -> gemini-2.5-flash
      },
    });
    
    const result = await team.generate('Compare TCP vs UDP for game networking.');
    

    Strategies: sequential, parallel, debate, review-loop, hierarchical, graph, panel. With hierarchical + emergent: { enabled: true }, the manager forges new sub-agents at runtime. Every roster agent can set its own provider, model, apiKey and effort; a parallel or panel agency can require a provider quorum (quorum: { minProviders: 2 }) before it synthesizes. A modelPool fills every seat that names neither provider nor model from named models on each call, with strict per-seat credentials and every key redacted from the records. Multi-agent docs ->


    Ecosystem

    PackageRole
    @framers/agentosCore runtime: agents, cognitive memory, orchestration, guardrails, voice, 13 LLM providers. Apache-2.0.
    @framers/agentos-extensions100+ first-party extensions: channel adapters, tool packs, integrations, guardrail packs.
    @framers/agentos-extensions-registryDiscovery + auto-loader for the extensions catalog.
    @framers/agentos-skills88 curated SKILL.md skills.
    @framers/agentos-skills-registryDiscovery + auto-loader for skills; where promoted forged tools land.
    @framers/agentos-benchOpen benchmark harness: bootstrap 95% CIs, judge-FPR probes, per-case run JSONs. MIT.
    @framers/sql-storage-adapterCross-platform SQL persistence: SQLite, Postgres, IndexedDB, Capacitor SQLite.
    paracosmAI agent swarm simulation on AgentOS. Live demo.
    wunderlandBatteries-included CLI + daemon over the AgentOS registries (preview). Apache-2.0.

    Extensions load from the manifest a host passes to AgentOS.create({ extensionManifest }); createCuratedManifest() from @framers/agentos-extensions-registry builds one from the curated extensions that are installed, and a runtime without a manifest loads none. Extensions architecture ->


    Configure API Keys

    Three layers, highest priority first: inline apiKey on the call, a module-level setDefaultProvider() at boot, or environment-variable auto-detection (OPENAI_API_KEY, ANTHROPIC_API_KEY, and the rest, resolved in priority order and reorderable with setProviderPriority([...])). A comma-separated list of keys gives a provider a key pool: round-robin by default, or AGENTOS_KEY_POOL_STRATEGY_<PROVIDER>=ordered (AGENTOS_KEY_POOL_STRATEGY_ANTHROPIC=ordered for Anthropic's keys alone; AGENTOS_KEY_POOL_STRATEGY=ordered for every provider's) to use the keys in order and fail over to the next when one is revoked, unpaid or throttled (Key rotation). probeProviderKey({ provider, apiKey }) says whether one key is live, out of credit, rejected or throttled, by the same billing probe the pool sends.

    Full credential resolution + default models per provider ->


    API Surfaces

    • agent(): lightweight stateful agent. Prompts, sessions, personality, hooks, tools, memory through memoryProvider hooks. With runtime: 'gmi' (or gmi()), every session is a GMI built from the same options, with cognitive memory, sentiment tracking and metaprompts per its cognition profile.
    • agency(): multi-agent teams built from agent() members, with HITL approval gates, run limits, structured output, provenance and, on the hierarchical strategy, specialists spawned at runtime. Its guardrails and rag options are reported or logged and not applied, and voice.enabled serves the agency as JSON text over a local WebSocket. It wires no channels; channel adapters run on the full runtime or with ChannelRouter.
    • generateText() / streamText() / generateObject() / generateImage() / removeBackground() / generateVideo() / generateMusic() / performOCR() / embedText(): low-level multi-modal helpers. generateText() and streamText() take tools; the other helpers take none.
    • workflow() / AgentGraph / mission(): three orchestration authoring APIs over one graph runtime.

    Provider fallback is on by default for generateText(), streamText(), agent() and agency(): when a call fails with a retryable error, it is retried on the other providers whose keys are in the environment. Pass fallbackProviders: [] to turn it off, or a list to set the chain yourself. The GMIs of the full runtime (processRequest()) call their provider without a fallback chain. The GMIs of agent({ runtime: 'gmi' }) call it through a completion gateway built from the agent's fallbackProviders, which moves to the next provider when a call fails with a retryable error before its first output, and not after it.

    Full API reference -> * High-Level API guide ->


    Documentation & Community

    • Benchmarks: benchmark tables, 95% confidence intervals, methodology audit
    • Architecture: system design, layer breakdown
    • Cognitive Memory: 8 mechanisms with 30+ APA citations
    • RAG Configuration: vector stores, embeddings, sources
    • Document Ingestion: PDF, Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, HTML and Markdown read to text, with bounds on what a Word or office archive inflates to
    • Library Index: sources over any vector store, and a browser entry for a page's own search and records, transcript files from other notetakers (SubRip, WebVTT, Otter, Fireflies, Word) read to turns with the speakers kept apart, and the plan of an archive's entries
    • Text Processing & Search: tokenizers and stemming, BM25, fuzzy and hybrid search, text statistics, chunking, reranking
    • Guardrails: two-phase dispatcher, four verdicts, fail-open and fail-closed guards
    • Voice Pipeline: TTS, STT, telephony
    • Blog: engineering posts, benchmark publications, transparency audits
    • Discord * GitHub Issues * Wilds.ai (AI game worlds powered by AgentOS)

    Contributing

    git clone https://github.com/framerslab/agentos.git && cd agentos
    pnpm install && pnpm build && pnpm test
    

    pnpm run test:coverage runs the suite with coverage, as CI does: the run fails below the thresholds in vitest.config.ts, and CI sends master's figures to Codecov, which the coverage badge reads.

    We use Conventional Commits. Project guides:

    GuideWhat
    ContributingDevelopment setup, commit and pull request rules, review threads, contribution licensing
    Adding an LLM providerProvider interface, acceptance checklist, sponsorship and disclosure
    Release guideHow merged changes become the daily npm release
    Agent instructionsCommands and conventions for coding agents
    MaintainersWho reviews and merges changes
    Code of ConductCommunity standards
    Security PolicyReporting vulnerabilities privately
    SupportWhere to get help
    SponsorsFunding, sponsor placement and disclosure

    Startups & Partnerships

    AgentOS is Apache-2.0 and free. We integrate any quality provider on technical merit, and partners and sponsors are featured in the README and docs, labeled as such. Companies engage through partner startup programs, sponsorship, or a provider integration. See SPONSORS.md.

    Programs & partners

    PartnerTypeProvidesSince
    DeepgramStartup ProgramSpeech-to-text + text-to-speech credits, go-to-market2026

    Ways to engage

    TrackWhat it isWhere
    SponsorFund development. Disclosed logo placement + release-notes credit.SPONSORS.md
    Provider integrationShip your model or API as a supported provider. Free, on technical merit.Provider guide

    Interested? Email [email protected].


    License

    Apache 2.0

    Built by Frame * Wilds.ai