Predictalot

io.github.psyb0tPublished by GitHub account psyb0tv1.2.2Updated Oct 24, 2026

Self-hosted MCP server for time-series forecasting and tabular ML via foundation models.

VerifiedSTDIODesktop onlyData & AnalyticsAI & ML

Overview

AI-generated overview

Self-hosted forecasting service exposing zero-shot time-series foundation models and tabular ML over an MCP endpoint.

What you can do
  • Run zero-shot forecasts with five time-series foundation models across six modality-specific forecast types, returning quantile or sample-path results.
  • Combine models per type with an ensemble and list available models.
  • Release resident model weights and runtime caches, or schedule teardown after in-flight forecasts.
  • Train and persist tabular learners server-side by model ID and forecast on the latest feature snapshot (HTTP only, not via MCP).
When to use it
Useful when an assistant needs forecasting on numeric series or engineered features without training a model first, and you are willing to run the service yourself in Docker. Tabular training and forecasting currently require direct HTTP calls rather than MCP tools.
Requirements
A local Docker runtime to run the container image, with a port exposed (for example 8080) and a volume for model storage. The server is configured through PREDICTALOT_* environment variables, including an auth token variable; MCP clients that bridge over stdio need PREDICTALOT_URL and the token variable set. Network access to the container endpoint.
Before you install
The server is protected by a bearer token supplied through an environment variable; choose a strong value rather than the example placeholder. Training persists models server-side and unload calls free resident model memory, so forecasts in flight may be affected. Model weights are downloaded and stored in the mounted volume, which consumes disk space.

Installation

In SourceWeft

  1. Open Predictalot in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

predictalot

[CI] [version] [license] [Docker Pulls]

One HTTP service, two model families, zero ceremony.

  • Foundation time-series — 5 zero-shot forecasters (chronos-2, timesfm-2.5, moirai-2, toto-1, sundial-base-128m). Hand them a context window, get quantile or sample-path forecasts. No training step. Six modality-specific endpoints under /v1/timeseries/<type>/.
  • Model lifecycle — POST /v1/models/unload releases all resident foundation-model weights and runtime caches. A forecast body with "unload": true schedules its model for teardown after concurrent forecasts using that model finish.
  • Tabular ML — 9 supervised learners (lightgbm, xgboost, hist-gbt, random-forest, logistic, mlp, svm-rbf, knn, naive-bayes) + 3 meta-learners (calibrated, stacking, diversified). Train on YOUR engineered features, persist server-side by modelId, forecast on the latest snapshot. Under /v1/tabular/.
  • MCP — streamable-HTTP tools at /mcp. One named tool per (FM type, model) cell plus per-type ensemble + listing. Tabular endpoints are HTTP-only for now.

Quick start

bash
docker run -d --name predictalot \  -v $HOME/predictalot-models:/models \  -e PREDICTALOT_AUTH_TOKENS=changeme \  -p 8080:8080 \  psyb0t/predictalot:latest
# Zero-shot FM forecastcurl -s http://localhost:8080/v1/timeseries/univariate/forecast \  -H "Authorization: Bearer changeme" -H "Content-Type: application/json" \  -d '{"model":"chronos-2","context":[[10,11,12,13,14,15,16,17,18,19,20]],"config":{"horizon":5}}' | jq
# Train + persist a tabular model on your own featurescurl -s http://localhost:8080/v1/tabular/train \  -H "Authorization: Bearer changeme" -H "Content-Type: application/json" \  -d '{"modelId":"my-model","backend":"lightgbm","target":[[100,101,99,...]],       "features":[{"rsi":[55,58,...],"macd":[0.3,0.4,...]}],       "config":{"mode":"direction","horizon":3,"nEstimators":400}}' | jq
# Then forecast on the latest snapshotcurl -s http://localhost:8080/v1/tabular/forecast \  -H "Authorization: Bearer changeme" -H "Content-Type: application/json" \  -d '{"modelId":"my-model","features":[{"rsi":[58],"macd":[0.4]}]}' | jq
# Release all resident foundation-model memory when it is no longer neededcurl -s -X POST http://localhost:8080/v1/models/unload \  -H "Authorization: Bearer changeme" | jq

Documentation

DocWhat it covers
docs/timeseries.mdFoundation time-series API. All 5 models (capabilities + per-model quirks + what each is recommended for), all 6 forecast types, per-type ensemble with weights + memberOverrides, extra per-call hatch, /models listings.
docs/tabular.mdTabular ML API. All 9 backends (what each is recommended for), 3 modes (direction / value / quantile), tier-1/2/3 config knobs, the 3 meta-learners (calibrated / stacking / diversified), storage layout.
docs/mcp.mdMCP streamable-HTTP server: tool naming, args, current scope (FM only).
docs/configuration.mdEvery PREDICTALOT_* env var.
docs/architecture.mdMulti-venv sidecar pattern for sundial, CPU vs CUDA images, multi-stage build.
docs/accuracy.mdBenchmark sMAPE + latency on academic + real-world datasets. Honest takeaways including which models lose.
docs/errors.mdError contract: 400 / 401 / 404 / 413 / 422 / 503 shapes.

CHANGELOG.md tracks per-version changes.

Agent integrations

The skill works in any agent that reads .agents/skills/ (such as peen), and installs natively in the clients below.

Claude Code

bash
claude plugin marketplace add psyb0t/agentsclaude plugin install predictalot@psyb0t

Claude Code prompts for the predictalot URL and, if auth is enabled, the token — the token is stored in your OS keychain.

Codex

bash
codex plugin marketplace add psyb0t/agentscodex plugin add predictalot@psyb0t

Installed via the marketplace, the skill invokes as $predictalot:predictalot. Codex also picks the skill up automatically, with no install, in any repo containing .agents/skills/ — there it invokes as plain $predictalot.

OpenClaw

The skill is published to ClawHub on every release:

bash
openclaw skills install @psyb0t/predictalot

For MCP clients that speak local stdio, the @psyb0t/predictalot plugin bridges to predictalot's /mcp endpoint:

bash
openclaw plugins install clawhub:@psyb0t/predictalot

Then set PREDICTALOT_URL (and PREDICTALOT_AUTH_TOKENS if the server requires one).

License

Code: WTFPL (see LICENSE). The MCP plugin under .agents/plugins/predictalot/ is MIT (its own LICENSE). Foundation models retain their upstream licenses — chronos-2 / timesfm-2.5 / toto-1 / sundial-base-128m: Apache 2.0; moirai-2: CC-BY-NC-4.0 (non-commercial). Tabular backends use their upstream licenses — lightgbm / xgboost / scikit-learn: permissive. Review each before commercial use.

Source: README.md at commit 7acba95

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

4
  1. v1.2.2LatestOct 10, 2026
  2. v1.2.1Sep 25, 2026
  3. v1.2.0Sep 24, 2026
  4. v1.1.9Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts