{
  "markdown": "# predictalot\n\n[![CI](https://github.com/psyb0t/docker-predictalot/actions/workflows/pipeline.yml/badge.svg?branch=main)](https://github.com/psyb0t/docker-predictalot/actions/workflows/pipeline.yml)\n[![version](https://raw.githubusercontent.com/psyb0t/docker-predictalot/badges/version.svg)](https://github.com/psyb0t/docker-predictalot/releases)\n[![license](https://raw.githubusercontent.com/psyb0t/docker-predictalot/badges/license.svg)](LICENSE)\n[![Docker Pulls](https://img.shields.io/docker/pulls/psyb0t/predictalot?style=flat-square)](https://hub.docker.com/r/psyb0t/predictalot)\n\n> One HTTP service, two model families, zero ceremony.\n\n- **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>/`.\n- **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/`.\n- **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.\n\n## Quick start\n\n```bash\ndocker run -d --name predictalot \\\n  -v $HOME/predictalot-models:/models \\\n  -e PREDICTALOT_AUTH_TOKENS=changeme \\\n  -p 8080:8080 \\\n  psyb0t/predictalot:latest\n\n# Zero-shot FM forecast\ncurl -s http://localhost:8080/v1/timeseries/univariate/forecast \\\n  -H \"Authorization: Bearer changeme\" -H \"Content-Type: application/json\" \\\n  -d '{\"model\":\"chronos-2\",\"context\":[[10,11,12,13,14,15,16,17,18,19,20]],\"config\":{\"horizon\":5}}' | jq\n\n# Train + persist a tabular model on your own features\ncurl -s http://localhost:8080/v1/tabular/train \\\n  -H \"Authorization: Bearer changeme\" -H \"Content-Type: application/json\" \\\n  -d '{\"modelId\":\"my-model\",\"backend\":\"lightgbm\",\"target\":[[100,101,99,...]],\n       \"features\":[{\"rsi\":[55,58,...],\"macd\":[0.3,0.4,...]}],\n       \"config\":{\"mode\":\"direction\",\"horizon\":3,\"nEstimators\":400}}' | jq\n\n# Then forecast on the latest snapshot\ncurl -s http://localhost:8080/v1/tabular/forecast \\\n  -H \"Authorization: Bearer changeme\" -H \"Content-Type: application/json\" \\\n  -d '{\"modelId\":\"my-model\",\"features\":[{\"rsi\":[58],\"macd\":[0.4]}]}' | jq\n```\n\n## Documentation\n\n| Doc | What it covers |\n|---|---|\n| [docs/timeseries.md](docs/timeseries.md) | Foundation 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. |\n| [docs/tabular.md](docs/tabular.md) | Tabular 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. |\n| [docs/mcp.md](docs/mcp.md) | MCP streamable-HTTP server: tool naming, args, current scope (FM only). |\n| [docs/configuration.md](docs/configuration.md) | Every `PREDICTALOT_*` env var. |\n| [docs/architecture.md](docs/architecture.md) | Multi-venv sidecar pattern for sundial, CPU vs CUDA images, multi-stage build. |\n| [docs/accuracy.md](docs/accuracy.md) | Benchmark sMAPE + latency on academic + real-world datasets. Honest takeaways including which models lose. |\n| [docs/errors.md](docs/errors.md) | Error contract: 400 / 401 / 404 / 413 / 422 / 503 shapes. |\n\n[CHANGELOG.md](CHANGELOG.md) tracks per-version changes.\n\n## Agent integrations\n\nThe [skill](.agents/skills/predictalot) works in any agent that reads `.agents/skills/`, and\ninstalls natively in the clients below.\n\n### Claude Code\n\n```bash\nclaude plugin marketplace add psyb0t/agents\nclaude plugin install predictalot@psyb0t\n```\n\nClaude Code prompts for the predictalot URL and, if auth is enabled, the token — the token is\nstored in your OS keychain.\n\n### Codex\n\n```bash\ncodex plugin marketplace add psyb0t/agents\ncodex plugin add predictalot@psyb0t\n```\n\nInstalled via the marketplace, the skill invokes as `$predictalot:predictalot`. Codex also picks\nthe skill up automatically, with no install, in any repo containing `.agents/skills/` — there it\ninvokes as plain `$predictalot`.\n\n### OpenClaw\n\nThe skill is published to ClawHub on every release:\n\n```bash\nopenclaw skills install @psyb0t/predictalot\n```\n\nFor MCP clients that speak local stdio, the [`@psyb0t/predictalot`](.agents/plugins/predictalot)\nplugin bridges to predictalot's `/mcp` endpoint:\n\n```bash\nopenclaw plugins install clawhub:@psyb0t/predictalot\n```\n\nThen set `PREDICTALOT_URL` (and `PREDICTALOT_AUTH_TOKENS` if the server requires one).\n\n## License\n\nCode: WTFPL (see `LICENSE`). The MCP plugin under `.agents/plugins/predictalot/` is MIT (its own LICENSE).\nFoundation 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.\n",
  "bytes": 5237,
  "sha": "54d90b076c4df2788f126e858eee226a1ba9a162c609ded4928c8f1b50b3be54",
  "repo_slug": "psyb0t/docker-predictalot",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_psyb0t_predictalot_d216e624/readme"
}