A voice recorder application for AugmentOS glasses, providing voice recording and transcription capabilities with a clean, user-friendly interface.
- Record audio from AugmentOS glasses
- Real-time transcription of recorded audio
- Voice commands for starting and stopping recordings
- Rename recordings
- View and play recordings
- Dual storage system: local filesystem + Cloudflare R2
- MongoDB database for metadata
- Built with Express and TypeScript
- Extends the AugmentOS SDK's TpaServer
- Provides REST APIs for managing recordings
- Real-time updates via Server-Sent Events (SSE)
- Integrated with AugmentOS SDK for voice commands
- React-based webview UI
- Streamlined, accessible interface
- Real-time updates via SSE
- Clean, modern UI with Tailwind CSS
The application uses a dual storage system:
-
Local Filesystem
- Recordings are saved to the local filesystem for development and quick access
- Files are stored in
./temp_storage/<userId>/<recordingId>.wav
-
Cloudflare R2
- Cloud storage for production use
- S3-compatible API
- Secure, cost-effective storage
-
MongoDB
- Stores recording metadata (title, duration, transcript, etc.)
- Provides efficient querying and indexing
- Node.js 16+ / Bun
- MongoDB (local or remote)
- Cloudflare R2 bucket (optional for development)
- Clone the repository
- Install dependencies:
npm install
- Copy the example environment file and customize:
cp .env.example .env
- Update environment variables in
.env
file - Start the development server:
npm run dev
Variable | Description | Default |
---|---|---|
PORT |
Server port | 8069 |
MONGODB_URI |
MongoDB connection string | mongodb://localhost:27017/recorder |
USE_LOCAL_DISK |
Whether to use local filesystem | true |
LOCAL_STORAGE_PATH |
Path for local storage | ./temp_storage |
R2_ACCESS_KEY_ID |
Cloudflare R2 access key | - |
R2_SECRET_ACCESS_KEY |
Cloudflare R2 secret key | - |
R2_BUCKET_NAME |
R2 bucket name | recorder |
R2_ENDPOINT |
R2 endpoint URL | - |
R2_PUBLIC_URL |
Public URL for R2 bucket | - |
npm run dev
This will start both the backend server and frontend development server concurrently. The backend will auto-reload when changes are made.
npm run docker:dev
This starts the application in a Docker container for an isolated development environment.
GET /api/recordings
- Get all recordings for authenticated userGET /api/recordings/:id
- Get a specific recordingPOST /api/recordings/start
- Start a new recordingPOST /api/recordings/:id/stop
- Stop an active recordingPUT /api/recordings/:id
- Update recording (e.g., rename)GET /api/recordings/:id/download
- Download recording audioDELETE /api/recordings/:id
- Delete a recording
The application uses Server-Sent Events (SSE) for real-time updates:
transcript
- Real-time transcript updatesrecording-status
- Recording status changesrecording-error
- Error notificationsrecording-deleted
- Recording deletion notifications
The application supports the following voice commands via AugmentOS glasses:
- "Start recording" - Starts a new recording
- "Stop recording" - Stops the current recording