Cron and webhooks
A task fires on a schedule, or when a POST arrives at its webhook, and the JSON body of that request can be placed in the prompt.
Scheduled AI tasks: a prompt, a trigger, and every run kept.
A task is a prompt. Give it a trigger and the server runs it by itself, against any OpenAI-compatible model, with the tools of every MCP server you have connected. There is no conversation here, only tasks that fire on their own, and a record of what each one did. One process serves the web app, a GraphQL API, and the same API as MCP tools for other agents.
A task fires on a schedule, or when a POST arrives at its webhook, and the JSON body of that request can be placed in the prompt.
Point it at Ollama, LM Studio, OpenAI or OpenRouter, add stdio or HTTP MCP servers, and every run can reach their tools.
Status, output, tool calls and token counts are stored for each run, and a run in flight can be watched as it happens.
git clone https://github.com/cubicecho/task_server.git
cd task_server
docker compose up --build
Open http://localhost:8787, go to Settings, point the base URL at an OpenAI-compatible server and pick a model. Then create a task, give it a cron expression, and press Run now. The database is embedded, so there is nothing else to install.
Full documentation lives in the project README: https://github.com/cubicecho/task_server