Project Info
Inspiration
I started HeyCodex because I wanted more control over voice input than the built-in dictation experience I was using gave me. I was already using Codex, and I wondered whether its Codex-app-server workflow could help me build a voice-input companion that matched the way I write, without adding another specialized voice-input subscription. HeyCodex was an in-progress personal project before Build Week, not a finished app. The event gave me a focused push to turn it into something clearer and more usable for other people.
What it does
HeyCodex is a macOS voice-input app for writing in the apps you already use. Press a global hotkey, speak, and it transcribes Japanese or English on-device with Apple SpeechAnalyzer. You can insert the transcript as-is, or optionally use AI Assist to clean it up. Ask AI lets you speak an instruction about selected text or a general question. The privacy boundary matters: raw audio is transcribed on-device. When you choose AI Assist or Ask AI, the relevant text is passed to a separately installed Codex CLI running on your Mac, which may send a request to OpenAI under your authenticated account. I want HeyCodex to feel like a practical companion for people who use Codex, while keeping those choices visible and optional.
How we built it
I built HeyCodex as a native macOS app with Swift, SwiftUI, and AppKit. The core experience combines Apple SpeechAnalyzer, global hotkeys, a recording HUD, and destination-aware text insertion. Optional AI features use the Codex CLI that the user installs and authenticates separately. During Build Week, I used Codex with GPT-5.6 extensively to review existing behavior, make product decisions, implement changes, and validate results. The work was not a claim that the entire app was created during the event; it was a focused period of moving an ongoing project toward a public-facing product.
Challenges we ran into
The hardest part was turning a workflow that made sense to me into one a new person could understand without having the same context. That meant untangling setup and permissions, making hotkey states and recording feedback clear, guarding text insertion, and explaining where optional AI processing begins. Supporting Japanese and English without making settings even more confusing added another layer. I treated those friction points as product decisions, not only technical ones. Each change had to make the next action more obvious while preserving the ability to use ordinary voice input locally.
Accomplishments we're proud of
I am proudest of moving HeyCodex beyond a personal setup and into a more complete product experience. Build Week work added and refined onboarding, input checks, restart behavior, settings, bilingual UI foundations, and safer AI-command interaction. The app now gives people a more understandable path from first launch to using voice input in their own workflow. I also built in practical guardrails: AI is optional, the app checks where it is about to insert text, and the interface communicates recording and processing state instead of hiding it. That combination is what makes HeyCodex feel useful rather than just technically possible.
What we learned
The biggest lesson was that effective use of Codex was not just about asking it to write code. GPT-5.6 was especially useful to me as a way to move between review, design decisions, implementation, and validation. Choosing a model and reasoning level that matched the task helped me keep momentum, but the important decisions still came from testing real behavior and deciding what would be understandable to another person. I also learned that voice input needs clear boundaries. Fast transcription matters, but so do permission explanations, safe insertion, and a plain account of what optional AI features do with text.
What's next
My next priority is to keep making the app more stable while improving and expanding the features people actually use. I also want to simplify the settings experience: it has grown alongside the app, and it now needs a calmer, clearer structure that makes important choices easy to find. Feedback from real users will guide those changes as I prepare HeyCodex for a public open-source release.
HeyCodex
English | 日本語 | User guide | 日本語ガイド | Privacy | プライバシー
HeyCodex is a macOS voice-input app for writing where you already work. Press a global hotkey, speak, and HeyCodex transcribes your voice on-device with Apple SpeechAnalyzer. You can then paste the transcript as-is or use the optional AI Assist flow through a separately installed OpenAI Codex CLI.
Highlights
- On-device speech-to-text for Japanese and English
- Global hotkey input; the default is the fn key
- Optional AI Assist for cleanup, punctuation, and spoken corrections
- Ask AI mode for voice instructions, with optional selected-text context
- Pasteboard-aware insertion with destination checks and Secure Input protection
- Local settings, history, and personal dictionary under your macOS user account
- English and Japanese app UI, with independent display, speech-recognition, and output-language settings
Requirements
- macOS 26 (Tahoe) or later
- Swift 6.2 or later; Command Line Tools are sufficient
- A separately installed and authenticated OpenAI Codex CLI for AI Assist and Ask AI
Run codex --version to check your installed version. HeyCodex does not bundle or redistribute the Codex CLI.
Build and verify
# Build the app and its command-line regression runner
swift build
# Run offline regression checks
.build/debug/HeyCodex --test-regressions
# Assemble a signed Debug app bundle
./scripts/make_app.sh debug
The app bundle is written to dist/HeyCodex.app. A stable local signing identity is needed for macOS privacy permissions to remain associated with the app. If needed, run bash scripts/make_signing_cert.sh before building the app bundle.
For a release bundle, run:
./scripts/make_app.sh release
First launch
HeyCodex needs these macOS permissions:
- Accessibility — detects the global hotkey and sends the paste shortcut.
- Microphone — records voice input.
- Speech Recognition — lets SpeechAnalyzer transcribe on-device.
After granting permissions, quit and relaunch the app. Accessibility is checked when the process starts.
Everyday use
Press the configured hotkey (fn by default), speak, then press it again to stop. The HUD shows the current state while HeyCodex records, transcribes, optionally refines, and inserts text.
Ask AI uses fn + Space to start and fn to stop by default. With selected text, it treats your spoken instruction as a request about that selection. Without a selection, it shows the answer in its own window instead of automatically inserting it.
See the full user guide or the Japanese user guide for setup, settings, history controls, and troubleshooting.
Privacy at a glance
Audio is transcribed on-device. When AI Assist is enabled, or when you use Ask AI, HeyCodex sends the relevant text to the Codex CLI running on your Mac; that CLI may send the request to OpenAI under your own authenticated account. Raw audio is not sent by HeyCodex to the Codex CLI.
Read the complete Privacy Policy before using AI-backed features.
OpenAI Build Week 2026
HeyCodex began before Build Week as a personal project that was still under active development. During the event, I used Codex with GPT-5.6 to review existing behavior, make product decisions, implement changes, and validate them. The work focused on making the project clearer, safer, and more usable for a broader range of people. The public evidence, scope boundary, and claim limits are documented in docs/BUILD_WEEK_2026.md.
Contributing and security
License and trademarks
The source code is available under the Apache License 2.0. Read NOTICE for the separate treatment of HeyCodex brand assets.
HeyCodex is an independent project and is not affiliated with, endorsed by, or sponsored by OpenAI. “OpenAI,” “ChatGPT,” and “Codex” are trademarks of their respective owners and are used only to identify the external runtime required by optional features.
Analysis
View
Metric
- 3
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- SwiftIn code
1 of 1 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
975 KB
Source files
75
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
GrShin5/heycodex-app
95 files · 2.0 MB · @ ac853de
Structure
Interface
4 files · 4%Screens, components and styles rendered to the user.
Application logic
53 files · 56%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Swift90%
- Markdown7%
- Shell3%
Share of indexed source by file size. Binary and vendored files are excluded.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.