ada-voice
v0.0.2
Published
<h2 align="center">
Readme
.
Overview
ADA: ADA is a voice coding assistant allowing you a better Developer experience while vibe coding with your agents.
ADA is named after Ada Lovelace, the first computer programmer, who wrote the first algorithm intended to be processed by a machine, paving the way for modern computing.
ADA is a fork of Groq Code CLI, an extensible command-line interface for interacting with the Groq platform.
Installation
For Development (Recommended)
git clone https://github.com/areai51/ada.git
cd ada
npm install
npm run build
npm link # Enables the `ada` command in any directory# Run this in the background during development to automatically apply any changes to the source code
npm run devTo Try it Out
npx ada-voice@latestUsage
# Start chat session
adaCommand Line Options
ada [options]
Options:
-t, --temperature <temp> Temperature for generation (default: 1)
-s, --system <message> Custom system message
-d, --debug Enable debug logging to debug-agent.log in current directory
-h, --help Display help
-V, --version Display version numberAuthentication
On first use, start a chat:
adaAnd type the /login command:

Get your API key from the Groq Console here
This creates a .ada/ folder in your home directory that stores your API key, default model selection, and any other config you wish to add.
You can also set your API key via environment variable:
export GROQ_API_KEY=your_api_key_hereAvailable Commands
/help- Show help and available commands/login- Login with your credentials/model- Select your Groq model/clear- Clear chat history and context/reasoning- Toggle display of reasoning content in messages
Voice Input
ADA supports voice input using Groq's speech-to-text API. To use voice input:
- Press
Ctrl+Vin the chat interface to activate voice input - Speak your message when you see "Listening... speak now"
- Press
SPACEorENTERto stop recording and process your speech - The transcribed text will be automatically sent as your message
For detailed setup instructions, see Voice Setup Guide.
Development
Testing Locally
# Run this in the background during development to automatically apply any changes to the source code
npm run devAvailable Scripts
npm run build # Build TypeScript to dist/
npm run dev # Build in watch modeProject Structure
groq-code-cli/
├── src/
│ ├── commands/
│ │ ├── definitions/ # Individual command implementations
│ │ │ ├── clear.ts # Clear chat history command
│ │ │ ├── help.ts # Help command
│ │ │ ├── login.ts # Authentication command
│ │ │ ├── model.ts # Model selection command
│ │ │ └── reasoning.ts # Reasoning toggle command
│ │ ├── base.ts # Base command interface
│ │ └── index.ts # Command exports
│ ├── core/
│ │ ├── agent.ts # AI agent implementation
│ │ └── cli.ts # CLI entry point and setup
│ ├── tools/
│ │ ├── tool-schemas.ts # Tool schema definitions
│ │ ├── tools.ts # Tool implementations
│ │ └── validators.ts # Input validation utilities
│ ├── ui/
│ │ ├── App.tsx # Main application component
│ │ ├── components/
│ │ │ ├── core/ # Core chat TUI components
│ │ │ ├── display/ # Auxiliary components for TUI display
│ │ │ └── input-overlays/ # Input overlays and modals that occupy the MessageInput box
│ │ └── hooks/
│ └── utils/
│ ├── constants.ts # Application constants
│ ├── file-ops.ts # File system operations
│ ├── local-settings.ts # Local configuration management
│ └── markdown.ts # Markdown processing utilities
├── docs/
├── package.json
├── tsconfig.json
└── LICENSETL;DR: Start with src/core/cli.ts (main entry point), src/core/agent.ts, and src/ui/hooks/useAgent.ts (bridge between TUI and the agent). Tools are in src/tools/, slash commands are in src/commands/definitions/, and customize the TUI in src/ui/components/.
Customization
Adding New Tools
Tools are AI-callable functions that extend the CLI's capabilities. To add a new tool:
- Define the tool schema in
src/tools/tool-schemas.ts:
export const YOUR_TOOL_SCHEMA: ToolSchema = {
type: 'function',
function: {
name: 'your_tool_name',
description: 'What your tool does',
parameters: {
type: 'object',
properties: {
param1: { type: 'string', description: 'Parameter description' }
},
required: ['param1']
}
}
};- Implement the tool function in
src/tools/tools.ts:
export async function yourToolName(param1: string): Promise<ToolResult> {
// Your implementation here
return createToolResponse(true, result, 'Success message');
}Register the tool in the
TOOL_REGISTRYobject andexecuteToolswitch statement insrc/tools/tools.ts.Add the schema to
ALL_TOOL_SCHEMASarray insrc/tools/tool-schemas.ts.
Adding New Slash Commands
Slash commands provide direct user interactions. To add a new command:
- Create command definition in
src/commands/definitions/your-command.ts:
import { CommandDefinition, CommandContext } from '../base.js';
export const yourCommand: CommandDefinition = {
command: 'yourcommand',
description: 'What your command does',
handler: ({ addMessage }: CommandContext) => {
// Your command logic here
addMessage({
role: 'system',
content: 'Command response'
});
}
};- Register the command in
src/commands/index.tsby importing it and adding to theavailableCommandsarray.
Changing Start Command
To change the start command from groq, change "groq" in "bin" of package.json to your global command of choice.
Re-run npm run build and npm link.
Contributing and Support
Improvements through PRs are welcome!
For issues and feature requests, please open an issue on GitHub.
Share what you create with Groq on our socials!
Featured Community Creations
- OpenRouter Support - rahulvrane
