Routines
Automate recurring tasks with AI-powered execution and cron scheduling.
Overview
Routines let you schedule tasks that Aurora executes automatically — from daily weather reports to weekly file cleanups. Each routine runs with full access to Aurora's tool set.
Features
- Cron scheduling — Standard cron expressions (daily, weekly, hourly, custom)
- AI execution — Aurora processes your prompt with full tool access
- Tool loop — Up to 5 tool iterations per execution (search, create files, fetch data)
- Manual trigger — Run any routine immediately via "Jetzt ausfuehren"
- Execution logs — Full result text, tool calls, success/failure status
- Autonomous mode — Routines execute without user interaction (no questions asked)
- Next-5-Runs preview — Vorschau der naechsten 5 geplanten Ausfuehrungen v3.12
Creating a Routine
- Open the Routines app
- Click "Neue Routine"
- Fill in:
- Name — e.g., "Wetterbericht"
- Prompt — What Aurora should do, e.g., "Suche den Wetterbericht fuer Muenchen und lege ihn als Datei in ~/Dokumente/Wetter/ ab"
- Schedule — Cron expression or preset (daily, weekly, etc.)
- Save and activate
v3.12 Updates v3.12
Next-5-Runs
Jede Routine zeigt jetzt eine Vorschau der naechsten 5 geplanten Ausfuehrungszeitpunkte:
- Berechnet aus dem Cron-Ausdruck
- Anzeige mit Datum und Uhrzeit
- Hilft bei der Verifizierung, dass der Cron-Ausdruck korrekt ist
Execution Engine v3.8
When a routine runs (manually or via cron), the following happens:
1. Select AI model (tools-capable, from user preferences)
2. Build system prompt (Aurora identity + routine context + tools)
3. Send user prompt to AI
4. Parse response for tool calls
5. Execute tools (file operations, web search, etc.)
6. Feed tool results back to AI
7. Repeat steps 4-6 (max 5 iterations)
8. Store final summary in logsAutonomous Execution Rules
Routines run without a user present. The system prompt enforces:
- Execute all steps immediately (search, create files, create directories)
- Never ask follow-up questions ("Soll ich...?", "Moechtest du...?")
- Always save results as files when the prompt requires it
- Summarize the result at the end
Model Selection
The routine engine uses the shared prepareModels() and selectModel() functions from lib/ai-providers.php. It prefers a model with tools capability. If none is found, it falls back to the first enabled model.
Tool Access
Routines have access to the same tools as Aurora in chat:
- File operations (read, write, create, delete, move)
- Web search and webpage fetching
- Note, document, and finance management
- Weather data
- Contact and calendar operations
Fallback
If the AI response is empty after tool execution (e.g., the model only returned tool calls without a summary), the system generates a fallback listing all executed tools and their results.
Logs
Each execution creates a log entry with:
| Field | Description |
|---|---|
started_at | Execution start time |
completed_at | Execution end time |
result | AI summary text |
tool_calls_json | JSON array of all tool calls with results |
success | Boolean success flag |
View logs by clicking "Logs" on any routine.
Cron Setup
Niuton uses separate cron jobs for E2E and PROD:
# /etc/cron.d/niuton-routines
*/5 * * * * www-data php /var/www/niuton-e2e/cron/run-routines.php
*/5 * * * * www-data php /var/www/niuton-prod/cron/run-routines.phpThe cron runner checks every 5 minutes for routines where next_run <= NOW() and is_active = true.
Database
-- Routine definitions
CREATE TABLE niuton_routines (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES niuton_users(id),
name VARCHAR(255) NOT NULL,
description TEXT,
prompt TEXT NOT NULL,
schedule VARCHAR(100), -- cron expression
is_active BOOLEAN DEFAULT true,
last_run TIMESTAMP,
next_run TIMESTAMP,
created_at TIMESTAMP DEFAULT NOW()
);
-- Execution logs
CREATE TABLE niuton_routine_logs (
id SERIAL PRIMARY KEY,
routine_id INTEGER REFERENCES niuton_routines(id),
started_at TIMESTAMP,
completed_at TIMESTAMP,
result TEXT,
tool_calls_json JSONB DEFAULT '[]',
success BOOLEAN DEFAULT false
);Architecture
api/routines.php → CRUD + manual "run_now" handler
cron/run-routines.php → Cron-triggered execution (same engine)
lib/tools.php → Tool definitions + parseToolCalls()
lib/tool-executor.php → Tool execution engine
lib/ai-providers.php → AI model selection + API calls