Learn Smarter, Not Harder — 100% Offline
Powered by RunAnywhere SDK — On-Device AI Inference
| 📖 About | ✨ Features | 🎯 Modes | ⚙️ Tech Stack | 🚀 Quick Start | 🏗️ Architecture | ❓ FAQ | 📬 Contact |
📖 About Algsoch
Algsoch is an advanced AI-powered study companion built with RunAnywhere SDK that adapts to your learning style. With 7 different learning modes and cutting-edge AI models (SmolLM2-360M, SmolVLM-256M) running 100% on your device, Algsoch provides personalized help for any subject.
Everything works completely offline. No internet. No data uploads. No tracking.
| 🔓 Works Offline No internet required |
⚡ Lightning Fast Sub-second latency |
🔒 100% Private Zero data uploads |
📦 Lightweight ~45 MB installed |
✨ Features
| ✅ 7 Learning Modes | ✅ On-device AI inference |
| ✅ Text-based learning | ✅ Full chat history |
| ✅ Local data storage | ✅ Multi-language support |
| 📖 Study Any Subject | Mathematics, Science, Languages, Programming, History, Economics, and more |
| 📸 Upload Images | Capture diagrams, equations, handwritten notes, charts |
| 💾 Save Progress | Full chat history stored locally, private and encrypted |
| 🎓 Learn Your Way | Adaptive responses across 7 learning modes |
| Feature | Status |
|---|---|
| Vision/Image analysis | 🔜 Planned |
| Handwriting recognition | 🔜 Planned |
| Voice input/output | 🔜 Planned |
| Study plan generation | 🔜 Planned |
| Progress tracking dashboard | 🔜 Planned |
| Multiple language support | 🔜 Planned |
🎯 7 Learning Modes
Algsoch adapts to your unique learning style with 7 powerful modes:
| Mode | Description |
|---|---|
| Direct 💬 | Get straight, concise answers instantly |
| Answer ✓ | Focused, well-structured responses |
| Explain 📖 | Deep dive with step-by-step breakdowns |
| Notes 📝 | Formatted bullet-point study notes |
| Direction 🧭 | Problem-solving approach guidance |
| Creative 💡 | Analogies and real-world examples |
| Theory 🔬 | Advanced conceptual deep-dives |
mindmap
root((Algsoch Modes))
Direct
Concise answers
Answer
Structured responses
Explain
Step-by-step
Notes
Bullet summaries
Direction
Problem guidance
Creative
Real-world analogies
Theory
Deep concepts
⚙️ Tech Stack
graph LR
A[User] --> B[Jetpack Compose UI]
B --> C[ViewModel / Services]
C --> D[RunAnywhere SDK]
D --> E[SmolLM2-360M]
D --> F[SmolVLM-256M]
D --> G[Whisper]
E --> H[llama.cpp]
F --> I[ONNX Runtime]
G --> I
style A fill:#667eea,color:#fff
style B fill:#764ba2,color:#fff
style C fill:#4a90d9,color:#fff
style D fill:#e84393,color:#fff
style E fill:#00b894,color:#fff
style F fill:#00cec9,color:#fff
style G fill:#fd79a8,color:#fff
| Component | Model | Size | Engine |
|---|---|---|---|
| LLM | SmolLM2-360M-Instruct | ~300 MB | llama.cpp |
| Vision | SmolVLM-256M-Instruct | ~200 MB | ONNX Runtime |
| Speech | Whisper | ~150 MB | ONNX Runtime |
| Framework | Android / Kotlin |
| UI Framework | Jetpack Compose + Material 3 |
| Data Storage | Local JSON Database |
| Processing | 100% On-Device |
| Privacy | Zero Cloud Access |
| Requirement | Minimum | Recommended |
|---|---|---|
| OS | Android 10 (API 29) | Android 14+ |
| Storage | 200 MB free | 1 GB+ |
| RAM | 1.5 GB | 3 GB+ |
| Network | Not required | Only for model download |
🚀 Quick Start
flowchart LR
A[Download APK] --> B[Allow Unknown Sources]
B --> C[Install APK]
C --> D[Launch App]
D --> E[Load AI Models]
E --> F[Start Learning!]
style A fill:#667eea,color:#fff
style B fill:#e17055,color:#fff
style C fill:#00b894,color:#fff
style D fill:#0984e3,color:#fff
style E fill:#fdcb6e,color:#222
style F fill:#6c5ce7,color:#fff
| Step | Action | Details |
|---|---|---|
| 1 | Download APK | Get the latest release from GitHub |
| 2 | Allow Unknown Sources | Settings → Apps → Install unknown apps → Enable |
| 3 | Install | Open APK file → Tap "Install" (< 1 min) |
| 4 | Load AI Models | |
| 5 | Start Learning | Pick a mode and begin — fully offline! |
⚠️ First Launch: You must download SmolLM2 model (~250 MB). Takes 2-3 minutes. Retries automatically up to 3 times if download fails.
🏗️ Architecture
flowchart TB
subgraph UI ["📱 Presentation Layer"]
HS[HomeScreen]
CS[ChatScreen]
MS[ModeSelectionScreen]
end
subgraph Logic ["🧠 Logic Layer"]
VM[ViewModel]
PB[PromptBuilder]
RP[ResponseParser]
end
subgraph SDK ["⚡ RunAnywhere SDK"]
MR[Model Registry]
DM[Download Manager]
IE[Inference Engine]
end
subgraph Backend ["🔧 Local Backends"]
L1[llama.cpp<br/>SmolLM2]
L2[ONNX Runtime<br/>SmolVLM / Whisper]
end
UI --> VM
VM --> PB
VM --> RP
PB --> IE
IE --> L1
IE --> L2
DM --> MR
MR --> L1
MR --> L2
style UI fill:#667eea20,stroke:#667eea
style Logic fill:#764ba220,stroke:#764ba2
style SDK fill:#e8439320,stroke:#e84393
style Backend fill:#00b89420,stroke:#00b894
sequenceDiagram
participant User
participant UI as Jetpack Compose
participant VM as ViewModel
participant SDK as RunAnywhere SDK
participant Model as Local Model
User->>UI: Ask question
UI->>VM: Send message + mode
VM->>VM: Build prompt (mode-specific)
VM->>SDK: chat(prompt, modelId)
SDK->>Model: Run inference locally
Model-->>SDK: Raw response
SDK-->>VM: Generated text
VM->>VM: Parse response by mode
VM-->>UI: Update UI state
UI-->>User: Display answer
app/src/main/
├── java/com/algsoch/
│ ├── MainActivity.kt
│ ├── data/
│ │ ├── models/
│ │ │ ├── Message.kt
│ │ │ └── UserPreferences.kt
│ │ └── repository/
│ ├── domain/
│ │ ├── ai/
│ │ │ ├── PromptBuilder.kt # 7 system prompts
│ │ │ └── ResponseParser.kt
│ │ └── models/
│ │ └── StructuredResponse.kt
│ ├── services/
│ │ ├── ModelService.kt # ML model management
│ │ └── AIInferenceService.kt
│ └── ui/
│ ├── screens/
│ │ ├── HomeScreen.kt
│ │ ├── ChatScreen.kt
│ │ └── ModeSelectionScreen.kt
│ └── theme/
│ └── AlgsochTheme.kt
└── resources/
└── drawable/
flowchart TD
Start([First Launch]) --> Check{Models exist?}
Check -->|Yes| Load[Load from device storage]
Check -->|No| Download[Download from HuggingFace]
Download --> Manage[RunAnywhere SDK manages:]
Manage --> Resume[HTTP download with resume]
Manage --> Progress[Progress callbacks]
Manage --> Cache[Cache management]
Manage --> Disk[Disk space verification]
Resume --> Ready[Models ready]
Load --> Ready
Ready --> Infer[Instant AI responses!]
style Start fill:#667eea,color:#fff
style Check fill:#fdcb6e,color:#222
style Load fill:#00b894,color:#fff
style Download fill:#e17055,color:#fff
style Ready fill:#6c5ce7,color:#fff
style Infer fill:#00cec9,color:#fff
| Technology | Purpose |
|---|---|
| Jetpack Compose | Modern declarative UI |
| Material 3 | Latest Material Design |
| Navigation Compose | Screen navigation |
| Coroutines & Flow | Async operations |
| ViewModel | State management |
| RunAnywhere SDK | On-device AI inference |
🔌 RunAnywhere SDK Integration
Algsoch is built entirely on RunAnywhere SDK — a framework for deploying AI models on mobile devices with zero cloud dependency.
dependencies {
implementation("ai.runanywhere:runanywhere-kotlin:0.16.0-test.39")
implementation("ai.runanywhere:runanywhere-llamacpp:0.16.0-test.39")
implementation("ai.runanywhere:runanywhere-onnx:0.16.0-test.39")
}class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
RunAnywhere.initialize(
context = this,
environment = SDKEnvironment.DEVELOPMENT
)
ModelService.registerDefaultModels()
}
}object ModelService {
fun registerDefaultModels() {
RunAnywhere.registerModel(
id = "smollm2-360m-instruct",
name = "SmolLM2 360M Instruct",
url = "https://huggingface.co/HuggingFaceTB/...",
framework = InferenceFramework.LLAMA_CPP,
memoryRequirement = 300_000_000
)
RunAnywhere.registerModel(
id = "smolvlm-256m-instruct",
name = "SmolVLM 256M Instruct",
url = "https://huggingface.co/HuggingFaceTB/...",
framework = InferenceFramework.ONNX,
memoryRequirement = 200_000_000
)
}
}class AlgsochViewModel : ViewModel() {
private val runAnywhere = RunAnywhere.getInstance()
fun sendMessage(userMessage: String, mode: LearningMode) {
viewModelScope.launch {
val systemPrompt = PromptBuilder.build(mode)
val fullPrompt = "$systemPrompt\n\nUser: $userMessage"
val response = runAnywhere.chat(
prompt = fullPrompt,
modelId = "smollm2-360m-instruct",
temperature = 0.7f,
maxTokens = 512
)
val parsedResponse = ResponseParser.parse(response, mode)
_uiState.value = ChatUIState.ResponseReceived(parsedResponse)
}
}
}suspend fun analyzeImage(imagePath: String, query: String): String {
val runAnywhere = RunAnywhere.getInstance()
return runAnywhere.vision(
modelId = "smolvlm-256m-instruct",
imagePath = imagePath,
prompt = query,
temperature = 0.7f
)
}class ModelDownloadManager(private val context: Context) {
fun downloadModels(): Flow<DownloadProgress> = flow {
emit(DownloadProgress("Downloading SmolLM2...", 0))
RunAnywhere.downloadModel("smollm2-360m-instruct")
emit(DownloadProgress("SmolLM2 downloaded", 50))
emit(DownloadProgress("Downloading SmolVLM...", 50))
RunAnywhere.downloadModel("smolvlm-256m-instruct")
emit(DownloadProgress("All models ready!", 100))
}
}| Benefit | Description |
|---|---|
| ✓ Zero Server Dependency | All AI processing runs locally |
| ✓ Sub-Second Latency | Instant responses, no network |
| ✓ Complete Privacy | Your data never leaves the device |
| ✓ Model Management | Auto download, caching, optimization |
| ✓ Works Offline | Perfect for any connectivity |
| ✓ Optimized Performance | Quantized models for mobile |
Learn more: RunAnywhere SDK
❓ FAQ
Do I need internet?
No! Algsoch runs completely offline. All AI processing happens directly on your device.
Are my conversations tracked?
Never. All conversations stay locally on your device. We don't collect, store, or upload any data.
Which subjects can I study?
Any subject! Math, Science, Languages, Programming, History, Economics, and more.
Is it really free?
Yes, 100% free. Open-source with no subscriptions, no ads, no hidden costs.
How do I switch learning modes?
Tap the Mode button in the chat interface to see all 7 learning styles.
Can I upload images?
Yes! Use the image button in chat to upload photos of diagrams, equations, notes, or charts.
How much storage do I need?
App: ~45 MB | Models: ~500 MB (SmolLM2 + SmolVLM) | Total recommended: 200 MB+ free
🤝 Contributing
We welcome contributions! See our Contributing Guide for details.
git checkout -b feature/your-feature
git commit -m "Add your feature"
git push origin feature/your-feature
# Then create a Pull Request
