voice-transcription
Skill7.6k starsChanged 5 months agoMITView on GitHub
Framework-wide voice dictation in the agent sidebar composer. Use when changing composer microphone UX, the transcribe-voice route, or the Voice Transcription settings section. Covers transcription-source routing, cleanup routing, Google realtime gating, and the voice transcription application-state keys.
- Reads credentials
We split this skill into the rules it gives an agent
16 rules. About 0 are common, 6 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 96
Keep tool-search in the initial Realtime manifest.
- Very specific: line 104
Do not persist audio. Transcript deltas stream into the chat thread that was on screen when the session started, as ordinary user and …
- Very specific: line 193
If builder-gemini and resolveHasBuilderPrivateKey() → calls transcribeWithBuilder({ model: "gemini-3-1-flash-lite" }) via Builder proxy, or …
- Very specific: line 194
If builder and resolveHasBuilderPrivateKey() → legacy alias.
- Very specific: line 195
If gemini → resolves the Gemini key under either name (resolveGeminiApiKey) and calls the direct Google Gemini path.
- Very specific: line 196
If groq → resolves GROQ_API_KEY and calls Groq's Whisper-compatible endpoint.
- Very specific: line 197
If openai → resolves OPENAI_API_KEY:
- Very specific: line 214
When a request includes instructions, pass them through to the selected LLM provider.
- Distinctive: line 228
Never hardcode a shared key.
- Very specific: line 236
Pre-register provider keys as
required: true: call registerRequiredSecret(...) from your own server plugin when a template needs a … - Very specific: line 240
Don't call transcription providers from the client — go through /_agent-native/transcribe-voice so the user's secret stays server-side.
- Distinctive: line 241
Don't remove the cancel affordance — mic permission abuse paranoia is real.
- Distinctive: line 242
Don't auto-submit the transcript — users always edit before sending.
- Distinctive: line 243
Don't route realtime tool calls around the central guarded agent executor.
- Distinctive: line 244
Don't persist realtime audio or put provider keys in SDP/session payloads.
- Distinctive: line 245
Don't hide send when the composer is empty.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Voice Transcription
The sidebar composer offers two distinct paths: the mic always starts editable
dictation, and the empty-draft primary button starts an opt-in realtime
speech-to-speech agent session.
Users configure dictation separately from AI cleanup. The source picker (Mac
Native, Google Realtime, Batch) is the Voice transcription row on Settings ›
Account › Preferences (VoiceTranscriptionSection compact, anchor voice);
cleanup and batch provider keys stay in the agent sidebar's Voice
Transcription section. Both write the per-user voice-transcription-prefs
application state. Both paths are available in every template that renders
the shared agent sidebar.
UX rules
- Always show the mic alongside the send button. Replacing send with the mic when the composer is empty confuses users, so keep both visible.
- The mic is dictation, with no chooser. A click starts dictation at once;
the browser's permission prompt is the only step in between. A blocked,
missing, or busy microphone shows the amber composer notice with Try again,
and the mic stays clickable. Do not read
voice-input-preferenceapp state. - Voice chat lives in the primary slot. With an empty draft, no run, no dictation, and a ready realtime provider (Builder or OpenAI), Send shows a voice-chat glyph and starts realtime voice. Any draft (text, attachment, Plan chip) turns it back into Send; without a provider it is a dimmed Send.
- Dictation is click-to-toggle, not push-to-talk. More forgiving in a sidebar, avoids
host-app hotkey clashes. Keyboard shortcut is
Cmd/Ctrl+Shift+MandEscapecancels mid-recording. - Transcript lands in the composer, editable, never auto-sent. Insert at
the caret via
editor.chain().focus().insertContent(text).run(). - Recording grows from the mic. While dictating, the mic's slot becomes a pill with a waveform driven by the analyser level (written from an animation frame, never through React state) and a stop button. Stop inserts the transcript; Escape cancels. Under reduced motion the bars stay still.
- Icons: Tabler
IconMicrophone(idle),IconPlayerStopFilled(stop), and the toolkit's five-barIconVoiceChat(voice chat, fromcomposer/voice-chat-icon).IconWaveSinereads as a heartbeat; never use it, a sparkle, or a robot icon for voice. - Errors via inline alert or toast, never
window.alert.
Realtime speech mode
Realtime speech mode is a full-duplex OpenAI Realtime WebRTC session, separate
from the dictation providers below. It prefers the authenticated user's
complete Builder connection and the Builder-managed metered gateway. A scoped
OPENAI_API_KEY is the fallback when Builder is not connected. The server owns
the gpt-realtime-2.1 session configuration and keeps credentials out of
browser code. Voice chat is offered only once one of them is configured.
- Voice chat lives in the composer. While a session is on, the mic's slot holds a status pill (live bars from the microphone while you speak, muted bars from the assistant's audio while it speaks, and the session status) and speaker and microphone mute toggles, nothing else; the primary slot is an End voice chat X, never red, that spins while connecting or ending. Muting the microphone disables the WebRTC input track; muting the speaker mutes playback only. The editor locks behind a "Listening…" placeholder: the realtime session takes no typed input, so a typed draft would start a separate run the voice agent never hears. Errors use the composer's amber notice with Try again.
- At silence the bars rest at their baseline; under reduced motion they stay
still and fade with the level. When the session becomes live, the assistant
gives one brief spoken greeting so readiness is unambiguous. Do not apply a
text-sized
max_output_tokenscap to that audio greeting because audio tokens can truncate it mid-sentence. - Voice device, language, intelligence and voice style live only in Settings
› Account › Preferences › Voice chat (
VoiceChatSettings), never in the composer. Those rows write the same preferences a session reads:application_state["realtime-voice-prefs"]and the browser-local microphone choice. A session re-reads them every time it starts, so a change applies to the next voice chat. - Semantic VAD keeps listening, starts responses automatically, and supports barge-in while the agent is speaking.
- Function calls must cross the authenticated realtime tool bridge and enter
executeAgentToolCall. Never callActionEntry.rundirectly: that bypasses schema validation, approvals, audit/journal behavior, timeouts, redaction, and mutation refreshes. - Preserve the active browser-tab id in request context so
set-url-path,set-search-params,view-screen, and tab-scoped application state affect the app the user is actually speaking to. Realtime tool manifests are capped, so prioritizenavigate,set-url-path,set-search-params, andview-screenbefore packing large template registries. - Keep
tool-searchin the initial Realtime manifest. A successful specific search may expand the live session with matching action schemas, but the server must derive those schemas from its own registry, bind authorization to the authenticated voice session, and continue execution throughexecuteAgentToolCall. Treatsession.update.toolsas a full replacement: preserve the pinned navigation/discovery tools, evict lower-priority entries within the manifest cap, and wait forsession.updatedbefore asking the model to continue with a newly discovered tool. - Do not persist audio. Transcript deltas stream into the chat thread that
was on screen when the session started, as ordinary user and assistant
messages that fill in under one id per turn; the shared
AgentKitChatconsumes them, so every host shows them. A turn is saved with the thread only once its transcript completes (a streaming turn is never saved), and ending or failing the session finalizes what was heard. Input transcription completes asynchronously from assistant generation, so reserve provider conversation item order: a turn appears only after every earlier turn has appeared, and completion arrival time never sets chat order. Ending voice chat opens that chat so the user can continue over text. Store only compact lifecycle and latest context atapplication_state["realtime-voice-session"]; delete it when the session ends. - Store the user-controlled language, intelligence, and output-voice choices at
application_state["realtime-voice-prefs"]. Keep this separate fromvoice-transcription-prefs, which configures editable dictation rather than the speech-to-speech session. - Missing-key failures should open Settings focused on the user-scoped
OPENAI_API_KEYfield. Never send, log, or echo the key to the browser.
Source And Cleanup
Settings must keep these as separate choices:
- Live transcription source:
mac-native,google-realtime, orbatch. - AI cleanup: independent off/on toggle. Cleanup uses managed Gemini first
when a managed AI services connection is configured, then BYOK Gemini (the one
Gemini key,
GOOGLE_GENERATIVE_AI_API_KEY; olderGEMINI_API_KEYrows still work). Gemini cleanup/title/summary generation is not a live STT source.
application_state["voice-transcription-prefs"] stores
{ transcriptionMode, provider, instructions }. The legacy provider field
is still written for old clients and batch provider preferences:
| Value | Meaning | Needs key |
mac-native | Native macOS/Tauri speech path; web clients normalize to browser-native where needed | No |
google-realtime | Dedicated WebSocket → Google Speech-to-Text gRPC StreamingRecognize path | GOOGLE_APPLICATION_CREDENTIALS |
batch | Upload audio after stop through the existing batch route | Builder/Gemini/Groq/OpenAI depending on fallback |
auto provider | Browser SpeechRecognition when supported; server batch fallback chain otherwise | No key needed in browsers that support SpeechRecognition |
builder-gemini | Managed Gemini Flash-Lite batch/cleanup preference | Managed AI services account connected |
gemini | Direct Google Gemini BYOK batch/cleanup preference | GOOGLE_GENERATIVE_AI_API_KEY (or legacy GEMINI_API_KEY) |
groq | Groq Whisper batch preference | GROQ_API_KEY |
openai | OpenAI Whisper batch preference | OPENAI_API_KEY |
browser | Legacy native/browser live speech preference | No |
Default behavior:
- The shared web settings/composer default to Batch /
auto. Inautomode,useVoiceDictationusesstartBrowser()(Web Speech API, no key required, incremental streaming) when the browser supportsSpeechRecognition. It only falls back to the MediaRecorder → server upload path whenSpeechRecognitionis not available (e.g. Firefox). This means dictation works out of the box in Chrome, Edge, and Safari without any API key configuration. - Dedicated macOS Tauri-native surfaces may save
mac-native, but do not assume the shared React settings default to it. - Old stored
buildervalues are treated asbuilder-gemini. - Old stored
browservalues are treated asmac-native. - Saved
google-realtimepreferences must never hit/_agent-native/transcribe-voice. They go through the dedicated session bridgePOST /_agent-native/transcribe-stream/session, which mints an opaque ai-services websocket session and keeps the Google service-account JSON off the client. - In the current bridge, the Google option is only actually ready when both the user's
GOOGLE_APPLICATION_CREDENTIALSsecret exists and a managed AI services connection is configured, because the framework mints the managed ai-services session before streaming begins.
Where the pieces live
| File | Purpose |
packages/toolkit/src/composer/useVoiceDictation.ts | Provider-routing hook (MediaRecorder / Web Speech) |
packages/toolkit/src/composer/VoiceButton.tsx | Mic, recording pill, voice-chat Send, error notice |
packages/toolkit/src/composer/RealtimeVoiceMode.tsx | Composer voice chat controls and settings |
packages/toolkit/src/composer/useRealtimeVoiceMode.tsx | WebRTC lifecycle, provider events, and tool bridge |
packages/toolkit/src/composer/TiptapComposer.tsx | Wires the hook, insertion, and keyboard shortcut |
packages/core/src/client/settings/VoiceTranscriptionSection.tsx | Live source + cleanup controls in sidebar settings; compact is the Preferences row |
packages/core/src/client/transcription/BuilderTranscriptionCta.tsx | CTA shown when Builder account isn't connected |
packages/core/src/client/transcription/use-live-transcription.ts | Web Speech live-transcription hook for recordings |
packages/core/src/server/transcribe-voice.ts | Route handler (routes to Builder/Gemini/Groq/Whisper) |
packages/core/src/server/realtime-voice.ts | Authenticated OpenAI SDP and action-tool routes |
packages/core/src/transcription/builder-transcription.ts | Builder proxy transcription client |
packages/core/src/voice/ | Shared voice context pack, prompt, and replacement helpers |
packages/core/src/secrets/register-framework-secrets.ts | Framework-level provider key registration |
Key resolution (server)
transcribe-voice.ts is batch-only. Do not add realtime streaming to this
route. Google Speech-to-Text realtime uses a dedicated audio-frame protocol:
client audio frames → /_agent-native/transcribe-stream/session →
ai-services WebSocket → Google gRPC StreamingRecognize → partial / final
transcript events. Use the canonical docs URL:
https://cloud.google.com/speech-to-text/v2/docs/streaming-recognize
Batch routing is based on the user's provider preference:
- If
builder-geminiandresolveHasBuilderPrivateKey()→ callstranscribeWithBuilder({ model: "gemini-3-1-flash-lite" })via Builder proxy, or uses Builder Gemini Flash-Lite to clean up a live native/browser transcript when the desktop client sends text instead of audio. - If
builderandresolveHasBuilderPrivateKey()→ legacy alias; preferbuilder-gemini. - If
gemini→ resolves the Gemini key under either name (resolveGeminiApiKey) and calls the direct Google Gemini path. - If
groq→ resolvesGROQ_API_KEYand calls Groq's Whisper-compatible endpoint. - If
openai→ resolvesOPENAI_API_KEY:readAppSecret({ key: "OPENAI_API_KEY", scope: "user", scopeId: session.email })— user's encrypted secret.resolveCredential("OPENAI_API_KEY")— env var + SQL settings fallback.
In auto mode / no preference, the route tries Builder Gemini Flash-Lite first
when Builder is connected, then Gemini BYOK, Groq, and OpenAI. The
organization's Voice input provider (Settings › Infrastructure, the
manage-service-providers action, org setting service-providers) moves one
of those to the front; a chosen provider with no key is skipped, a failed
Builder or Gemini attempt falls through, and the first Whisper-compatible
provider with a key answers. Read the order with
serviceProviderOrder("voice", choice); never re-list it. The org choice
applies only when the user's own provider is auto: a user's single-provider
preference (and the live source: Mac native, Google realtime, or Batch) stays
per user and wins. An unreadable org setting fails the request with 503 rather
than using the default order, and /_agent-native/voice-providers/status
reports it as orgProvider (with orgProviderLookupFailed when unreadable).
When a request includes instructions, pass them through to the selected LLM
provider. Gemini uses them in the transcription prompt, Builder receives them
as transcription/cleanup instructions, and Whisper-compatible providers receive
them as provider prompt/context.
Requests may also include a multipart voiceContext JSON field. Parse it with
parseVoiceContextPack() from @agent-native/core/voice and pass the resulting
context through buildVoiceGuidanceBlock(); do not hand-roll separate prompt
formats. The context pack is for bounded snippets, active references, route/page
metadata, and preferred vocabulary/replacements only. Browser-native and Google
realtime final text can POST { text, provider, instructions, voiceContext } to
/_agent-native/transcribe-voice when AI cleanup is enabled; batch audio can
send the same voiceContext field with its audio upload.
Never hardcode a shared key. Never log the value. Never echo it back to the client.
Overriding per-template
Templates can:
- Disable the mic: pass
voiceEnabled={false}toTiptapComposer. - Replace the button: wrap
TiptapComposerand render your ownextraActionButton; the framework mic stays immediately before the primary send/stop control. UsestopButtonfor an active-run control so the disabled send button becomes stop when the draft is empty and returns when the user types. - Pre-register provider keys as
required: true: callregisterRequiredSecret(...)from your own server plugin when a template needs a specific BYOK provider in onboarding.
Don'ts
- Don't call transcription providers from the client — go through
/_agent-native/transcribe-voiceso the user's secret stays server-side. - Don't remove the cancel affordance — mic permission abuse paranoia is real.
- Don't auto-submit the transcript — users always edit before sending.
- Don't route realtime tool calls around the central guarded agent executor.
- Don't persist realtime audio or put provider keys in SDP/session payloads.
- Don't hide send when the composer is empty; it confuses users.
Trending
More talk lately.about the whole repository
Who's talking about BuilderIO/agent-native
- @github-trending-js.bsky.social“📦 BuilderIO / agent-native ⭐ 4,978 (+89) 🗒 TypeScript A framework for building agentic apps”Bluesky · Sep 20, 2026 · 2 likes
- @github-trending-js.bsky.social“📦 BuilderIO / agent-native ⭐ 4,011 (+96) 🗒 TypeScript A framework for building agent-native applications.”Bluesky · Jul 26, 2026 · 2 likes
- @epicvibecoder.bsky.social“agent-native: a TypeScript framework from Builder.io for apps where AI agents are first-class users, not an …”Bluesky · Jun 20, 2026 · 2 likes
- @github-trending-js.bsky.social“🔥 Hot Repo! 🔥 (100+ new stars) 📦 BuilderIO / agent-native ⭐ 7,378 (+107) 🗒 TypeScript A framework for …”Bluesky · Oct 16, 2026 · 1 likes
- @dailygithubtrends.bsky.social“今日のGitHubトレンド BuilderIO/agent-native Agent-Nativeは、自律的に動作するエージェントと専用UIを組み合わせて開発するためのTypeScriptフレームワークです。…”Bluesky · Sep 23, 2026 · 1 likes
The biggest 5 of 61 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 61
Talked about on GitHub and Bluesky (61 times).
On GitHub · 50
- Oct 28, 2026agent-skills.github.builderio.agent-native: 0-unstable-2026-10-27 → 0.1.287 — sudosubin/agents.nix0 reactions
- Oct 28, 2026claude-code-marketplaces.github.builderio.agent-native: 0-unstable-2026-10-27 → 0.1.287 — sudosubin/agents.nix0 reactions
- Oct 28, 2026codex-marketplaces.github.builderio.agent-native: 0-unstable-2026-10-27 → 0.1.287 — sudosubin/agents.nix0 reactions
- Oct 28, 2026codex-plugins.github.builderio.agent-native: 0-unstable-2026-10-27 → 0.1.287 — sudosubin/agents.nix0 reactions
- Oct 28, 2026agent-plugins.github.builderio.agent-native: 0-unstable-2026-10-27 → 0.1.287 — sudosubin/agents.nix0 reactions
45 more on GitHub
- Oct 28, 2026claude-code-plugins.github.builderio.agent-native: 0-unstable-2026-10-26 → 0.1.287 — sudosubin/agents.nix0 reactions
- Oct 27, 2026agent-skills.github.builderio.agent-native: 1a39024 → efdb9df — sudosubin/agents.nix0 reactions
- Oct 27, 2026claude-code-marketplaces.github.builderio.agent-native: 869063e → 06e5709 — sudosubin/agents.nix0 reactions
- Oct 27, 2026codex-marketplaces.github.builderio.agent-native: ba4ef37 → 06e5709 — sudosubin/agents.nix0 reactions
- Oct 27, 2026codex-plugins.github.builderio.agent-native: 55d65b3 → 0cc74c0 — sudosubin/agents.nix0 reactions
- Oct 27, 2026chore: update Agent Native exported skills — BuilderIO/skills0 reactions · 1 comment
- Oct 27, 2026agent-plugins.github.builderio.agent-native: 1fcca73 → cc341a4 — sudosubin/agents.nix0 reactions
- Oct 27, 2026agent-plugins.github.builderio.agent-native: 36006e6 → 1fcca73 — sudosubin/agents.nix0 reactions
- Oct 27, 2026agent-skills.github.builderio.agent-native: 3e6443d → 1a39024 — sudosubin/agents.nix0 reactions
- Oct 27, 2026claude-code-marketplaces.github.builderio.agent-native: 87ba124 → 869063e — sudosubin/agents.nix0 reactions
- Oct 27, 2026codex-marketplaces.github.builderio.agent-native: 12a91c6 → ba4ef37 — sudosubin/agents.nix0 reactions
- Oct 27, 2026codex-plugins.github.builderio.agent-native: 7af9ac7 → 55d65b3 — sudosubin/agents.nix0 reactions
- Oct 27, 2026agent-plugins.github.builderio.agent-native: e9d5ffa → 36006e6 — sudosubin/agents.nix0 reactions
- Oct 27, 2026agent-skills.github.builderio.agent-native: 0-unstable-2026-10-26 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 27, 2026claude-code-marketplaces.github.builderio.agent-native: eaa780a → 87ba124 — sudosubin/agents.nix0 reactions
- Oct 27, 2026codex-marketplaces.github.builderio.agent-native: 6b65dba → 12a91c6 — sudosubin/agents.nix0 reactions
- Oct 27, 2026claude-code-marketplaces.github.builderio.agent-native: 0-unstable-2026-10-26 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 27, 2026codex-marketplaces.github.builderio.agent-native: 0-unstable-2026-10-26 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 27, 2026codex-plugins.github.builderio.agent-native: 0-unstable-2026-10-26 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 27, 2026agent-plugins.github.builderio.agent-native: 0-unstable-2026-10-26 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 27, 2026agent-skills.github.builderio.agent-native: 7faf806 → 7397901 — sudosubin/agents.nix0 reactions
- Oct 26, 2026claude-code-marketplaces.github.builderio.agent-native: e0ebd6b → 5252c0e — sudosubin/agents.nix0 reactions
- Oct 26, 2026codex-marketplaces.github.builderio.agent-native: e0ebd6b → 5252c0e — sudosubin/agents.nix0 reactions
- Oct 26, 2026codex-plugins.github.builderio.agent-native: e0ebd6b → 5252c0e — sudosubin/agents.nix0 reactions
- Oct 26, 2026agent-plugins.github.builderio.agent-native: 0ab7e59 → 5dc9ffe — sudosubin/agents.nix0 reactions
- Oct 26, 2026claude-code-plugins.github.builderio.agent-native: 0-unstable-2026-10-22 → 0-unstable-2026-10-26 — sudosubin/agents.nix0 reactions
- Oct 26, 2026agent-skills.github.builderio.agent-native: d2739c6 → 7faf806 — sudosubin/agents.nix0 reactions
- Oct 26, 2026chore: update Agent Native exported skills — BuilderIO/skills0 reactions · 1 comment
- Oct 26, 2026claude-code-marketplaces.github.builderio.agent-native: eb073a4 → e0ebd6b — sudosubin/agents.nix0 reactions
- Oct 26, 2026codex-marketplaces.github.builderio.agent-native: eb073a4 → e0ebd6b — sudosubin/agents.nix0 reactions
- Oct 26, 2026codex-plugins.github.builderio.agent-native: eb073a4 → e0ebd6b — sudosubin/agents.nix0 reactions
- Oct 26, 2026agent-plugins.github.builderio.agent-native: 0-unstable-2026-10-25 → 0-unstable-2026-10-26 — sudosubin/agents.nix0 reactions
- Oct 26, 2026agent-skills.github.builderio.agent-native: 0-unstable-2026-10-25 → 0-unstable-2026-10-26 — sudosubin/agents.nix0 reactions
- Oct 26, 2026claude-code-marketplaces.github.builderio.agent-native: 0-unstable-2026-10-25 → 0-unstable-2026-10-26 — sudosubin/agents.nix0 reactions
- Oct 26, 2026codex-marketplaces.github.builderio.agent-native: 0-unstable-2026-10-25 → 0-unstable-2026-10-26 — sudosubin/agents.nix0 reactions
- Oct 26, 2026codex-plugins.github.builderio.agent-native: 0-unstable-2026-10-25 → 0-unstable-2026-10-26 — sudosubin/agents.nix0 reactions
- Oct 26, 2026agent-skills.github.builderio.agent-native: 1fe5d77 → 8505239 — sudosubin/agents.nix0 reactions
- Oct 26, 2026claude-code-marketplaces.github.builderio.agent-native: 1fe5d77 → 8505239 — sudosubin/agents.nix0 reactions
- Oct 26, 2026codex-marketplaces.github.builderio.agent-native: 1fe5d77 → 8505239 — sudosubin/agents.nix0 reactions
- Oct 26, 2026codex-plugins.github.builderio.agent-native: 1fe5d77 → 8505239 — sudosubin/agents.nix0 reactions
- Oct 26, 2026agent-plugins.github.builderio.agent-native: 1fe5d77 → 8505239 — sudosubin/agents.nix0 reactions
- Oct 22, 2026chore: update Agent Native exported skills — BuilderIO/skills0 reactions · 1 comment
- Oct 16, 2026[Candidate] builderio/agent-native - large collection (876 SKILL.md files) — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 15, 2026Builder.io, 에이전틱 앱 오픈소스 TS 프레임워크 'Agent-Native' 베타 출시 — UI·에이전트·HTTP·CLI·MCP·A2A 6개 서피스 공유 액션 (10/15, 공식 블로그) — roomedia/ax-trend0 reactions
- Oct 15, 2026Define human decisions once as schema-checked actions shared by the dashboard and factory mcp — mikeroySoft/factory0 reactions · 9 comments
On Bluesky · 11
- Sep 20, 2026📦 BuilderIO / agent-native ⭐ 4,978 (+89) 🗒 TypeScript A framework for building agentic apps — @github-trending-js.bsky.social2 likes and reposts
- Jul 26, 2026📦 BuilderIO / agent-native ⭐ 4,011 (+96) 🗒 TypeScript A framework for building agent-native applications. — @github-trending-js.bsky.social2 likes and reposts
- Jun 20, 2026agent-native: a TypeScript framework from Builder.io for apps where AI agents are first-class users, not an afterthought. Design once,… — @epicvibecoder.bsky.social2 likes and reposts · 1 reply
- Oct 16, 2026🔥 Hot Repo! 🔥 (100+ new stars) 📦 BuilderIO / agent-native ⭐ 7,378 (+107) 🗒 TypeScript A framework for building agentic apps — @github-trending-js.bsky.social1 likes and repost
- Sep 23, 2026今日のGitHubトレンド BuilderIO/agent-native Agent-Nativeは、自律的に動作するエージェントと専用UIを組み合わせて開発するためのTypeScriptフレームワークです。… — @dailygithubtrends.bsky.social1 likes and repost
6 more on Bluesky
- Sep 20, 2026📦 BuilderIO / agent-native ⭐ 4,978 (+89) 🗒 TypeScript A framework for building agentic apps — @github-trending.bsky.social1 likes and repost
- Sep 20, 2026今日のGitHubトレンド BuilderIO/agent-native Agent-Nativeは、自律的な動作を行うエージェントと専用UIを統合して構築するためのTypeScriptフレームワークです。… — @dailygithubtrends.bsky.social1 likes and repost
- Jun 19, 2026今日のGitHubトレンド BuilderIO/agent-native Agent-Nativeは、リッチなUIと自律型エージェントを統合したアプリケーションを構築するためのオープンソースフレームワークです。… — @dailygithubtrends.bsky.social1 likes and repost
- Jun 19, 2026🔥 Hot Repo! 🔥 (100+ new stars) 📦 BuilderIO / agent-native ⭐ 819 (+172) 🗒 TypeScript A framework for building agent-native applications. — @github-trending.bsky.social1 likes and repost
- Jun 18, 2026🔥 Hot Repo! 🔥 (100+ new stars) 📦 BuilderIO / agent-native ⭐ 673 (+131) 🗒 TypeScript A framework for building agent-native applications. — @github-trending-js.bsky.social1 likes and repost
- Jun 23, 2026🚀 Skyrocketing! 🚀 (200+ new stars) 📦 BuilderIO / agent-native ⭐ 1,793 (+434) 🗒 TypeScript A framework for building agent-native… — @github-trending-js.bsky.social0 likes and reposts · 1 reply
In this repository103 other files it gives its agents.
- AGENTS.mdAGENTS.md
- a2a-protocolSkill
- actionsSkill
- adding-a-featureSkill
- adding-tests-and-ciSkill
- adding-workspace-appsSkill
- address-feedbackSkill
- address-feedback-with-repliesSkill
- agent-native-docsSkill
- agent-native-toolkitSkill
- agent-pageSkill
- audit-logSkill
- authenticationSkill
- automationsSkill
- babysit-prSkill
- browser-sessionsSkill
- bug-traceSkill
- build-an-appSkill
- capture-learningsSkill
- changelogSkill
- chat-first-workbenchSkill
- client-methodsSkill
- client-side-routingSkill
- community-prsSkill
- composable-mini-appsSkill
- concurrent-agentsSkill
- configurationSkill
- context-awarenessSkill
- context-xraySkill
- create-skillSkill
- customizing-agent-nativeSkill
- data-programsSkill
- debug-runsSkill
- decisionsSkill
- delegate-to-agentSkill
- delegating-workSkill
- design-editor-reproSkill
- extension-pointsSkill
- extensionsSkill
- external-agentsSkill
- feature-flagsSkill
- fix-at-the-boundarySkill
- fragility-commonSkill
- framework-storesSkill
- frontend-designSkill
- generative-uiSkill
- harness-agentsSkill
- identify-fragile-systemsSkill
- integration-webhooksSkill
- internationalizationSkill
- investigate-bugSkill
- jira-refactor-findingsSkill
- launchdarklySkill
- multi-frontier-desktopSkill
- mvp-followupSkill
- native-navigationSkill
- new-branchSkill
- observabilitySkill
- onboardingSkill
- performanceSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

