How searpro/agora works
Agora is an Android BYOK assistant: users configure a provider and model, send a conversation turn, and receive a locally stored response. Its runtime spans provider requests, conversation persistence, and optional agent capabilities including search/RAG, MCP, scheduled automation, local models, and device/shell control. The README documents these capabilities; sampled code confirms startup/database wiring, semantic-search context construction, embedding workers, and parts of task execution. Other subsystem connections are shown only where README documents them.
Main entry points: TaskExecutionEngine.kt Agent execution · MainActivity.kt Android app · LlmProvider.kt Cloud providers · HttpClient.kt HTTP transport
Components 19
App and conversations
- Android app
app/src/main/java/com/newoether/agora/MainActivity.kt - Agent execution
app/src/main/java/com/newoether/agora/automation/TaskExecutionEngine.kt
Model providers
- Cloud providers
provider/cloud/src/main/java/com/newoether/agora/api/LlmProvider.kt - HTTP transport
provider/cloud/src/main/java/com/newoether/agora/api/HttpClient.kt - Local models
app/src/main/java/com/newoether/agora/api/LlamaChatEngine.kt
Agent capabilities
- Web search
app/src/main/java/com/newoether/agora/api/DuckDuckGoScraper.kt - Conversation RAG
app/src/main/java/com/newoether/agora/viewmodel/RagManager.kt - Embedding cache
app/src/main/java/com/newoether/agora/service/EmbeddingCacheWorker.kt - Skills and memory
app/src/main/java/com/newoether/agora/data/SkillManager.kt - MCP tools
app/src/main/java/com/newoether/agora/mcp/McpProtocolClient.kt - Scheduled tasks
app/src/main/java/com/newoether/agora/automation/AutomationScheduler.kt - Remote shell
app/src/main/java/com/newoether/agora/remote/RemoteControl.kt - Alpine sandbox
app/src/fdroid/java/com/newoether/agora/sandbox/ProotSandboxManager.kt
Data and persistence
- Conversation store
app/src/main/java/com/newoether/agora/data/repository/ConversationRepository.kt - Chat database
app/src/main/java/com/newoether/agora/data/local/ChatDatabase.kt - Settings
app/src/main/java/com/newoether/agora/data/SettingsManager.kt
Device control
- Phone control
app/src/main/java/com/newoether/agora/phone/PhoneToolProvider.kt
Other components
- User
- Model endpoint
Connections 18
- User → Android app: opens and configures
README.md - Android app → Settings: selects provider
README.md - User → Agent execution: sends turn
README.md - Agent execution → Cloud providers: requests completion
README.md - Cloud providers → HTTP transport: uses transport
- HTTP transport → Model endpoint: sends request
README.md - Agent execution → Local models: runs local model
- Agent execution → Conversation store: stores response
README.md - Conversation store → Chat database: persists locally
README.md - Agent execution → Web search: can invoke
README.md - Agent execution → Conversation RAG: can retrieve context
README.md - Conversation RAG → Embedding cache: indexes vectors
README.md - Agent execution → Skills and memory: can use
README.md - Agent execution → MCP tools: dispatches tools
README.md - Scheduled tasks → Agent execution: runs tasks
- Agent execution → Remote shell: can invoke
README.md - Agent execution → Alpine sandbox: can use
README.md - Agent execution → Phone control: can control