Lumingo — Your Private AI English Tutor
Inspiration
Learning a language requires consistent practice, especially when it comes to speaking. However, finding opportunities to practice English can be difficult, and I wanted to build something that makes speaking practice more accessible without compromising the learner's control over their data.
That idea became Lumingo, an open-source, local-first English tutor designed for learners from A1 to C2 proficiency levels. Rather than building another chatbot wrapper, I wanted to explore how voice interaction, local infrastructure, and user-controlled AI providers could work together in a practical learning tool.
What It Does
Lumingo provides a voice-driven environment for practicing English with an AI tutor. It combines speech processing with an AI model selected by the learner, allowing users to bring their own API key (BYOK) instead of being locked into a single AI provider.
Its core principles are:
- Local-first architecture: The application, speech processing, and learner data are managed by a local Rust server.
- Provider choice: Learners choose their preferred AI provider and supply their own API key.
- Privacy by design: The application serves its Next.js interface over loopback, and only text is sent to the selected external AI provider.
- Open source: The code is publicly available for developers to inspect, learn from, and extend.
How I Built It
Lumingo uses Rust for its core backend and application orchestration, alongside TypeScript, React, and Next.js for its user interface.
The Rust server is responsible for managing the microphone, speech models, conversation workflow, and learner data. The Next.js interface provides the user-facing experience, while the AI integration communicates with the learner's chosen provider using their own API key.
During ForgeHacks, I worked on advancing the voice conversation loop, the tutor-cli chat workflow, offline testing, and project documentation. These efforts focus on connecting the individual components into a more cohesive voice-based learning experience.
Challenges
One of the central engineering challenges is coordinating the different parts of a voice conversation: capturing audio, processing speech, generating a tutor response, and delivering the next interaction. These components need to work together reliably for the experience to feel like a conversation rather than a sequence of disconnected requests.
Another challenge is maintaining a clear boundary between local processing and external AI services. Privacy is not simply a feature added to the interface; it influences how the application is structured and how information moves between components.
What I Learned
Building Lumingo has helped me explore the engineering behind AI applications beyond model calls alone. I have learned more about Rust application architecture, voice-oriented workflows, integrating a TypeScript frontend with a native backend, and designing explicit privacy boundaries around external services.
It has also reinforced the importance of building AI tools around real user needs rather than adding AI to an application without a clear purpose.
Impact and Future Direction
My goal is to make regular English speaking practice more accessible while giving learners greater control over their tools, data, and choice of AI provider.
Lumingo is an ongoing open-source project. I plan to continue improving its conversation experience, reliability, and learning workflows as it develops into a more complete personal language tutor.
Built with privacy, openness, and practical language learning in mind.
Built With
- ai
- byok
- cli
- edtech
- education
- javascript
- llm
- natural-language-processing
- nextjs
- privacy
- react
- rust
- speech-recognition
- typescript
Log in or sign up for Devpost to join the conversation.