Aatman AI is a privacy-first, on-device AI assistant for Android and iOS. All inference runs locally on your mobile processor using lightweight quantized LLM models โ no cloud, no servers, no data collection.
Built with .NET MAUI and powered by llama.cpp for native performance.
Aatman AI is a mobile chat application that brings powerful AI capabilities directly to your phone:
| Layer | Technology |
|---|---|
| Framework | .NET 9 MAUI (Multi-platform App UI) |
| UI Pattern | MVVM (Model-View-ViewModel) |
| Navigation | Shell-based routing |
| Database | SQLite (sqlite-net-pcl) |
| Inference | llama.cpp (P/Invoke to native .so libs) |
| HTTP | HttpClient with resumable downloads |
| DI Container | Microsoft.Extensions.DependencyInjection |
AatmanAI/
โโโ src/AatmanAI/
โ โโโ Core/ # Constants, enums, utilities
โ โโโ Data/
โ โ โโโ Database/ # AppDatabase, migrations
โ โ โโโ Models/ # Entity models (Conversation, ChatMessage, etc.)
โ โโโ Services/
โ โ โโโ Interfaces/ # Service contracts
โ โ โโโ Native/ # P/Invoke wrappers for llama.cpp
โ โ โโโ ChatService.cs # Conversation & message management
โ โ โโโ InferenceService.cs # LLM inference engine
โ โ โโโ ModelService.cs # Model manifest & lifecycle
โ โ โโโ DownloadService.cs # HTTP download manager
โ โ โโโ DeviceService.cs # Device capability detection
โ โ โโโ VaultService.cs # Document RAG (keyword search)
โ โ โโโ CustomPromptService.cs
โ โ โโโ NetworkAuditService.cs
โ โ โโโ [Auth/Voice/Translation]Service.cs (stubs)
โ โโโ ViewModels/ # MVVM ViewModels
โ โโโ Views/ # XAML pages
โ โโโ Platforms/
โ โ โโโ Android/libs/arm64-v8a/ # llama.cpp .so binaries
โ โโโ Resources/
โ โ โโโ Raw/model_manifest.json # Model catalog
โ โโโ AppShell.xaml # Shell navigation routes
โ โโโ MauiProgram.cs # DI registration
โโโ README.md
| Service | Responsibility |
|---|---|
| ChatService | Manages conversations, messages, system prompt building (RAG + user profile + custom prompts) |
| InferenceService | Loads GGUF models, generates tokens via llama.cpp, manages context window |
| ModelService | Fetches model manifest, tracks downloaded models, sets active model |
| DownloadService | HTTP downloads with progress tracking, speed/ETA calculation, cancellation |
| DeviceService | Benchmarks RAM/storage/GPU, checks model compatibility |
| VaultService | Indexes uploaded documents, performs keyword search for RAG |
| CustomPromptService | CRUD for prompt folders and prompts |
| NetworkAuditService | Logs all HTTP requests for transparency |
โโโโโโโโโโโโโโโ
โ App Launch โ
โโโโโโโโฌโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ MauiProgram.cs โ โ Register all services & ViewModels in DI container
โโโโโโโโฌโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ App.xaml.cs โ โ Initialize AppDatabase, set MainPage = AppShell
โโโโโโโโฌโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ AppShell.xaml โ โ Navigate to initial route: "splash"
โโโโโโโโฌโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ SplashPage โ โ Show logo, check first launch flag
โโโโโโโโฌโโโโโโโโโโโโโโโ
โ
โโ First Launch? โโYESโโโถ Navigate to "firstlaunch" (onboarding)
โ
โโ Returning User? โโNOโโโถ Navigate to "main/home" (conversation list)
โโโโโโโโโโโโโโโโโโโโ
โ FirstLaunchPage โ โ Welcome screen
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ ProfileSetupPage โ โ User enters name, life goal, interests
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ ProfileLicensePageโ โ Show Apache 2.0 license, privacy policy
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ MarketplacePage โ โ Download first model (required to use app)
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ HomePage โ โ Main conversation list
โโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโ
โ HomePage โ โ User taps "New Chat" or selects existing conversation
โโโโโโโโฌโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatViewModel.LoadConversationAsync โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Load conversation metadata
โโ Load all messages from DB
โโ Populate Messages collection
โ
โผ
โโโโโโโโโโโโโโโโ
โ ChatPage โ โ Display messages, input box, header pills
โโโโโโโโฌโโโโโโโโ
โ
โ User types message, taps Send
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatViewModel.SendAsync โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Save user message to DB
โโ Add placeholder assistant message to UI
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatService.SendMessageAsync โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Build system prompt:
โ โโ Custom prompt (if selected)
โ โโ Language instruction (if non-English)
โ โโ Vault RAG context (search user's documents)
โ โโ User profile (name, goals, interests)
โ
โโ Load conversation history
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ InferenceService.GenerateAsync โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Check if model is loaded
โ โโ If not: LoadModelAsync (llama.cpp)
โ
โโ Trim history to fit context window
โโ Call llama_generate_stream (P/Invoke)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Token Streaming Loop โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ For each token:
โโ Yield token to ChatService
โโ ChatService yields to ChatViewModel
โโ ChatViewModel appends to assistant message
โโ UI updates in real-time
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Generation Complete โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Save assistant message to DB
โโ Update conversation metadata (message count, timestamp)
โโ IsGenerating = false
โโโโโโโโโโโโโโโโโโโโ
โ MarketplacePage โ โ User taps "Download" on a model card
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MarketplaceViewModel.DownloadModelAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Check device compatibility (RAM, storage, GPU)
โ โโ If incompatible: Show alert, abort
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DownloadService.StartDownloadAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Create DownloadTask observable
โโ Start HTTP GET with Range header (resumable)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Download Progress Loop โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ For each chunk:
โโ Write to file stream
โโ Update DownloadTask.Progress (0.0 - 1.0)
โโ Calculate speed (MB/s) and ETA
โโ Fire DownloadProgressChanged event
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MarketplaceViewModel subscribes โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Find matching MarketplaceModelItem
โโ Update DownloadProgress, SpeedText, EtaText
โโ UI shows progress bar in real-time
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Download Complete โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Fire DownloadCompleted event
โโ ModelService saves to DB (DownloadedModel table)
โโ MarketplaceModelItem.IsDownloaded = true
โโ UI shows "Use This Model" button
โโโโโโโโโโโโโโโโโโโโ
โ ChatPage โ โ User taps model pill (green dot)
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatViewModel.SelectModelAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Show action sheet with downloaded models
โโ User selects a model
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ModelService.SetActiveModelAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Update DB: mark new model as active
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ InferenceService.UnloadModelAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Call llama_free (P/Invoke)
โโ Release memory
โโ State = Idle
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ InferenceService.LoadModelAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ State = Loading
โโ Call llama_load_model (P/Invoke)
โโ Allocate context buffer
โโ State = Loaded
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatViewModel updates UI โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ SelectedModelName = "0.5B" (or model size)
โโ ModelStatus = "0.5B"
โโ Pill label updates
โโโโโโโโโโโโโโโโโโโโ
โ VaultPage โ โ User taps "Add Document"
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ VaultViewModel.AddDocumentAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ File picker (PDF, TXT, MD)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ VaultService.AddDocumentAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Extract text (PDF โ Markdig, TXT โ raw)
โโ Split into chunks (512 chars, 50 char overlap)
โโ Save VaultDocument + VaultChunk to DB
โโ Build keyword index (lowercase, split on whitespace)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Document Indexed โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Later, during chat:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatService.BuildSystemPromptAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ VaultService.SearchAsync(userMessage)โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Tokenize query (lowercase, split)
โโ Search chunks by keyword overlap
โโ Score by match count
โโ Return top 5 chunks
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ VaultService.BuildContext(results) โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Format as: "RELEVANT DOCUMENTS:\n[chunk1]\n[chunk2]..."
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Inject into system prompt โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ AI uses vault context in response
# Clone the repository
git clone https://github.com/yourusername/AatmanAI.git
cd AatmanAI
# Restore dependencies
dotnet restore src/AatmanAI/AatmanAI.csproj
# Build for Android
dotnet build src/AatmanAI/AatmanAI.csproj -f net9.0-android -c Debug
# Deploy to connected Android device
dotnet build src/AatmanAI/AatmanAI.csproj -f net9.0-android -c Debug -t:Run -p:AdbTarget="-s <DEVICE_ID>"
# Build for iOS (requires macOS)
dotnet build src/AatmanAI/AatmanAI.csproj -f net9.0-ios -c Debug
Models are defined in Resources/Raw/model_manifest.json and fetched from the remote manifest at:
https://raw.githubusercontent.com/aatmanai/models/main/manifest.json
Each model entry includes:
Services/Interfaces/IYourService.csServices/YourService.csMauiProgram.cs:
builder.Services.AddSingleton<IYourService, YourService>();
Views/YourPage.xamlViewModels/YourViewModel.csMauiProgram.csAppShell.xaml or navigate via:
await Shell.Current.GoToAsync("//yourroute");
Modify AppDatabase.cs and increment version:
private const int DatabaseVersion = 2; // Increment this
protected override async Task MigrateAsync(int oldVersion, int newVersion)
{
if (oldVersion < 2)
{
// Add migration SQL here
}
}
Apache License 2.0
Copyright ยฉ 2024 Aatman AI (sritcreations.com)
See LICENSE for full text.
Aatman AI โ Your AI, Your Device, Your Privacy.
C#
97.2%
C
2.8%
Aatman AI is a privacy-first, on-device AI assistant for Android and iOS. All inference runs locally on your mobile processor using lightweight quantized LLM models โ no cloud, no servers, no data collection.
Built with .NET MAUI and powered by llama.cpp for native performance.
Aatman AI is a mobile chat application that brings powerful AI capabilities directly to your phone:
| Layer | Technology |
|---|---|
| Framework | .NET 9 MAUI (Multi-platform App UI) |
| UI Pattern | MVVM (Model-View-ViewModel) |
| Navigation | Shell-based routing |
| Database | SQLite (sqlite-net-pcl) |
| Inference | llama.cpp (P/Invoke to native .so libs) |
| HTTP | HttpClient with resumable downloads |
| DI Container | Microsoft.Extensions.DependencyInjection |
AatmanAI/
โโโ src/AatmanAI/
โ โโโ Core/ # Constants, enums, utilities
โ โโโ Data/
โ โ โโโ Database/ # AppDatabase, migrations
โ โ โโโ Models/ # Entity models (Conversation, ChatMessage, etc.)
โ โโโ Services/
โ โ โโโ Interfaces/ # Service contracts
โ โ โโโ Native/ # P/Invoke wrappers for llama.cpp
โ โ โโโ ChatService.cs # Conversation & message management
โ โ โโโ InferenceService.cs # LLM inference engine
โ โ โโโ ModelService.cs # Model manifest & lifecycle
โ โ โโโ DownloadService.cs # HTTP download manager
โ โ โโโ DeviceService.cs # Device capability detection
โ โ โโโ VaultService.cs # Document RAG (keyword search)
โ โ โโโ CustomPromptService.cs
โ โ โโโ NetworkAuditService.cs
โ โ โโโ [Auth/Voice/Translation]Service.cs (stubs)
โ โโโ ViewModels/ # MVVM ViewModels
โ โโโ Views/ # XAML pages
โ โโโ Platforms/
โ โ โโโ Android/libs/arm64-v8a/ # llama.cpp .so binaries
โ โโโ Resources/
โ โ โโโ Raw/model_manifest.json # Model catalog
โ โโโ AppShell.xaml # Shell navigation routes
โ โโโ MauiProgram.cs # DI registration
โโโ README.md
| Service | Responsibility |
|---|---|
| ChatService | Manages conversations, messages, system prompt building (RAG + user profile + custom prompts) |
| InferenceService | Loads GGUF models, generates tokens via llama.cpp, manages context window |
| ModelService | Fetches model manifest, tracks downloaded models, sets active model |
| DownloadService | HTTP downloads with progress tracking, speed/ETA calculation, cancellation |
| DeviceService | Benchmarks RAM/storage/GPU, checks model compatibility |
| VaultService | Indexes uploaded documents, performs keyword search for RAG |
| CustomPromptService | CRUD for prompt folders and prompts |
| NetworkAuditService | Logs all HTTP requests for transparency |
โโโโโโโโโโโโโโโ
โ App Launch โ
โโโโโโโโฌโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ MauiProgram.cs โ โ Register all services & ViewModels in DI container
โโโโโโโโฌโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ App.xaml.cs โ โ Initialize AppDatabase, set MainPage = AppShell
โโโโโโโโฌโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ AppShell.xaml โ โ Navigate to initial route: "splash"
โโโโโโโโฌโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ SplashPage โ โ Show logo, check first launch flag
โโโโโโโโฌโโโโโโโโโโโโโโโ
โ
โโ First Launch? โโYESโโโถ Navigate to "firstlaunch" (onboarding)
โ
โโ Returning User? โโNOโโโถ Navigate to "main/home" (conversation list)
โโโโโโโโโโโโโโโโโโโโ
โ FirstLaunchPage โ โ Welcome screen
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ ProfileSetupPage โ โ User enters name, life goal, interests
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ ProfileLicensePageโ โ Show Apache 2.0 license, privacy policy
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ MarketplacePage โ โ Download first model (required to use app)
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ HomePage โ โ Main conversation list
โโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโ
โ HomePage โ โ User taps "New Chat" or selects existing conversation
โโโโโโโโฌโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatViewModel.LoadConversationAsync โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Load conversation metadata
โโ Load all messages from DB
โโ Populate Messages collection
โ
โผ
โโโโโโโโโโโโโโโโ
โ ChatPage โ โ Display messages, input box, header pills
โโโโโโโโฌโโโโโโโโ
โ
โ User types message, taps Send
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatViewModel.SendAsync โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Save user message to DB
โโ Add placeholder assistant message to UI
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatService.SendMessageAsync โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Build system prompt:
โ โโ Custom prompt (if selected)
โ โโ Language instruction (if non-English)
โ โโ Vault RAG context (search user's documents)
โ โโ User profile (name, goals, interests)
โ
โโ Load conversation history
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ InferenceService.GenerateAsync โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Check if model is loaded
โ โโ If not: LoadModelAsync (llama.cpp)
โ
โโ Trim history to fit context window
โโ Call llama_generate_stream (P/Invoke)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Token Streaming Loop โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ For each token:
โโ Yield token to ChatService
โโ ChatService yields to ChatViewModel
โโ ChatViewModel appends to assistant message
โโ UI updates in real-time
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Generation Complete โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Save assistant message to DB
โโ Update conversation metadata (message count, timestamp)
โโ IsGenerating = false
โโโโโโโโโโโโโโโโโโโโ
โ MarketplacePage โ โ User taps "Download" on a model card
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MarketplaceViewModel.DownloadModelAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Check device compatibility (RAM, storage, GPU)
โ โโ If incompatible: Show alert, abort
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DownloadService.StartDownloadAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Create DownloadTask observable
โโ Start HTTP GET with Range header (resumable)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Download Progress Loop โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ For each chunk:
โโ Write to file stream
โโ Update DownloadTask.Progress (0.0 - 1.0)
โโ Calculate speed (MB/s) and ETA
โโ Fire DownloadProgressChanged event
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MarketplaceViewModel subscribes โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Find matching MarketplaceModelItem
โโ Update DownloadProgress, SpeedText, EtaText
โโ UI shows progress bar in real-time
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Download Complete โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Fire DownloadCompleted event
โโ ModelService saves to DB (DownloadedModel table)
โโ MarketplaceModelItem.IsDownloaded = true
โโ UI shows "Use This Model" button
โโโโโโโโโโโโโโโโโโโโ
โ ChatPage โ โ User taps model pill (green dot)
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatViewModel.SelectModelAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Show action sheet with downloaded models
โโ User selects a model
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ModelService.SetActiveModelAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Update DB: mark new model as active
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ InferenceService.UnloadModelAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Call llama_free (P/Invoke)
โโ Release memory
โโ State = Idle
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ InferenceService.LoadModelAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ State = Loading
โโ Call llama_load_model (P/Invoke)
โโ Allocate context buffer
โโ State = Loaded
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatViewModel updates UI โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ SelectedModelName = "0.5B" (or model size)
โโ ModelStatus = "0.5B"
โโ Pill label updates
โโโโโโโโโโโโโโโโโโโโ
โ VaultPage โ โ User taps "Add Document"
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ VaultViewModel.AddDocumentAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ File picker (PDF, TXT, MD)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ VaultService.AddDocumentAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Extract text (PDF โ Markdig, TXT โ raw)
โโ Split into chunks (512 chars, 50 char overlap)
โโ Save VaultDocument + VaultChunk to DB
โโ Build keyword index (lowercase, split on whitespace)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Document Indexed โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Later, during chat:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatService.BuildSystemPromptAsync โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ VaultService.SearchAsync(userMessage)โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Tokenize query (lowercase, split)
โโ Search chunks by keyword overlap
โโ Score by match count
โโ Return top 5 chunks
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ VaultService.BuildContext(results) โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ Format as: "RELEVANT DOCUMENTS:\n[chunk1]\n[chunk2]..."
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Inject into system prompt โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโ AI uses vault context in response
# Clone the repository
git clone https://github.com/yourusername/AatmanAI.git
cd AatmanAI
# Restore dependencies
dotnet restore src/AatmanAI/AatmanAI.csproj
# Build for Android
dotnet build src/AatmanAI/AatmanAI.csproj -f net9.0-android -c Debug
# Deploy to connected Android device
dotnet build src/AatmanAI/AatmanAI.csproj -f net9.0-android -c Debug -t:Run -p:AdbTarget="-s <DEVICE_ID>"
# Build for iOS (requires macOS)
dotnet build src/AatmanAI/AatmanAI.csproj -f net9.0-ios -c Debug
Models are defined in Resources/Raw/model_manifest.json and fetched from the remote manifest at:
https://raw.githubusercontent.com/aatmanai/models/main/manifest.json
Each model entry includes:
Services/Interfaces/IYourService.csServices/YourService.csMauiProgram.cs:
builder.Services.AddSingleton<IYourService, YourService>();
Views/YourPage.xamlViewModels/YourViewModel.csMauiProgram.csAppShell.xaml or navigate via:
await Shell.Current.GoToAsync("//yourroute");
Modify AppDatabase.cs and increment version:
private const int DatabaseVersion = 2; // Increment this
protected override async Task MigrateAsync(int oldVersion, int newVersion)
{
if (oldVersion < 2)
{
// Add migration SQL here
}
}
Apache License 2.0
Copyright ยฉ 2024 Aatman AI (sritcreations.com)
See LICENSE for full text.
Aatman AI โ Your AI, Your Device, Your Privacy.
C#
97.2%
C
2.8%