NeuralAI / docs /SERVICE_ARCHITECTURE.md
Subject-Emu-5259's picture
Push NeuralAI project files - training data, scripts, services, knowledge base
38b4eff verified
|
Raw
History Blame Contribute Delete
4.76 kB
# NeuralAI Service Architecture
## Podman Quadlet → Zo Service Mapping
| Podman Concept | Zo Equivalent | NeuralAI Implementation |
|----------------|---------------|------------------------|
| `.container` files | `register_user_service()` | 3 registered services |
| systemd `Requires=` | Service startup order | model→webui dependency |
| systemd `After=` | Service health checks | tools→webui dependency |
| NFS volumes | `/home/workspace/NeuralAI/` | Built-in persistent storage |
| `Restart=always` | Zo supervisor | Auto-restart on crash |
| `.network` files | `localhost` networking | Services talk via HTTP |
## Service Definitions (like Quadlets)
### neuralai-model.service (port 7001)
```ini
# Equivalent to: neuralai-model.container
[Service]
Entrypoint=python3 /home/workspace/Projects/NeuralAI/services/model_service.py
Port=7001
Restart=always
Environment=MODEL_PATH=/home/workspace/Projects/NeuralAI/checkpoints/v2_model
[Unit]
Description=NeuralAI Model Inference Service
# Model must be ready before webui
Before=neuralai-webui.service
```
### neuralai-tools.service (port 7002)
```ini
# Equivalent to: neuralai-tools.container
[Service]
Entrypoint=python3 /home/workspace/Projects/NeuralAI/services/tools_service.py
Port=7002
Restart=always
Volume=/home/workspace/NeuralAI:/data:rw
[Unit]
Description=NeuralAI Tools Service (sandbox, storage)
# Tools must be ready before webui
Before=neuralai-webui.service
```
### neuralai-webui.service (port 5000)
```ini
# Equivalent to: neuralai-webui.container
[Service]
Entrypoint=python3 /home/workspace/Projects/NeuralAI/services/webui_service.py
Port=5000
Public=true
Restart=always
[Unit]
Description=NeuralAI Web Interface
Requires=neuralai-model.service
Requires=neuralai-tools.service
After=neuralai-model.service
After=neuralai-tools.service
```
## Dependency Graph
```
┌─────────────────┐
│ neuralai-model │ :7001
│ (inference) │
└────────┬────────┘
│ Requires
┌─────────────────┐ ┌─────────────────┐
│ neuralai-tools │───▶│ neuralai-webui │ :5000 (public)
│ (sandbox) │ │ (router) │
└─────────────────┘ └─────────────────┘
:7002 │
Public URL:
https://neuralai-webui-deandrewharris.zocomputer.io
```
## Storage (like NFS volume)
```
/home/workspace/NeuralAI/
├── images/ # Generated images (shared)
├── documents/ # User documents for RAG (shared)
├── conversations/ # Chat history (shared)
├── models/ # Model checkpoints (shared)
└── cache/ # Temporary files (shared)
```
All services mount `/home/workspace/NeuralAI/` - like an NFS volume shared across containers.
## Management Commands
### Like systemctl for Podman:
```bash
# Check status
systemctl --user status neuralai-*.service
# In Zo:
service_doctor("neuralai-model")
# Restart a service
systemctl --user restart neuralai-model.service
# In Zo:
update_user_service(service_id)
# View logs
journalctl --user -u neuralai-model.service
# In Zo:
cat /dev/shm/neuralai-model.log
```
### Start/Stop All:
```bash
# Podman quadlet style
./services/start_all.sh # Starts in dependency order
./services/stop_all.sh # Stops in reverse order
./services/status.sh # Shows all service states
```
## Restart Behavior
| Failure Scenario | What Happens |
|------------------|--------------|
| Model OOM crash | Only model service restarts, webui stays up |
| Tools timeout | Only tools service restarts |
| WebUI crash | Only webui restarts, model stays loaded |
| Model unhealthy | Webui returns 503, auto-recovery in progress |
## Benefits (Same as Your Podman Setup)
1. **Isolation**: Each service in its own process
2. **Independence**: Failures don't cascade
3. **Dependencies**: Proper startup ordering
4. **Shared storage**: All services access same `/NeuralAI/`
5. **Declarative**: Service configs are simple Python files
6. **Auto-restart**: Supervisor handles recovery
7. **Observability**: Separate logs per service
## Current Status
```
✅ neuralai-model (7001) - Ready, model loaded
✅ neuralai-tools (7002) - Ready, sandbox active
✅ neuralai-webui (5000) - Ready, public URL live
```
Public: https://neuralai-webui-deandrewharris.zocomputer.io