{"data":{"slug":"shyftlabs-continuum","name":"continuum","tagline":"Continuum, the agent runtime by ShyftLabs. Build, orchestrate, ship.","github_url":"https://github.com/shyftlabs/continuum","owner":"shyftlabs","repo":"continuum","owner_avatar_url":"https://avatars.githubusercontent.com/u/64531234?v=4","primary_language":"Python","stars":75,"forks":8,"topics":["agent-framework","agentic-ai","ai-agents","ai-orchestration","anthropic","enterprise-ai","human-in-the-loop","kimi-k2","llama","llm","llm-framework","llm-observability","llmops","mcp","multi-agent","openai","qwen","temporal"],"archived":false,"github_pushed_at":"2026-07-13T06:18:24+00:00","maintenance_label":"Very active","url":"https://www.graphcanon.com/tools/shyftlabs-continuum","markdown_url":"https://www.graphcanon.com/tools/shyftlabs-continuum.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/shyftlabs-continuum","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=shyftlabs-continuum","description":"Continuum — the agent runtime by ShyftLabs. Build, orchestrate, ship.","homepage_url":"https://docs.continuum.shyftlabs.io/","license":"Apache-2.0","open_issues":16,"watchers":0,"ai_summary":null,"readme_excerpt":"## 🚀 Quick start\n\n**Requirements:** Python 3.13+ and Docker (for Redis · Qdrant/Milvus · Langfuse).\n\n```bash\npython3.13 -m venv .venv && source .venv/bin/activate\npip install shyftlabs-continuum\n\ncontinuum up                 # start local infra (Redis + Qdrant); writes ./.env\necho \"OPENAI_API_KEY=sk-…\" >> .env   # add your provider key(s) — see Configuration below\n```\n\n`continuum up` ships with the package — it locates the bundled Docker stack and starts\nit for you, so there's no compose file to find or copy. It defaults to the **minimal**\nprofile (Redis + Qdrant); pick a bigger one with `continuum up standard` / `continuum up full`.\n\n> **Contributors** working from a clone: `git clone https://github.com/shyftlabs/continuum.git && cd continuum`,\n> then `python3.13 -m venv .venv && source .venv/bin/activate`, `pip install -e \".[dev]\"`,\n> `cp .env.template .env`, and `continuum up`.\n\n#### Infrastructure profiles\n\n| Command | Services started | Use it when |\n|---|---|---|\n| `continuum up` *(minimal)* | Redis + Qdrant (2 containers) | Day-to-day development — a stateful agent with memory, nothing heavy. |\n| `continuum up standard` | minimal + Langfuse stack (8) | You want tracing/observability in the [Langfuse UI](http://localhost:3000). |\n| `continuum up full` | everything (13), incl. Temporal + Milvus | Durable workflows (Temporal) or the Milvus vector store. |\n\nEach profile also writes a managed block to `./.env` (`VECTOR_STORE_PROVIDER`, `LANGFUSE_ENABLED`, …)\nso the SDK only talks to services that are actually running. Other commands:\n`continuum down [-v]`, `continuum status`, `continuum logs [service] [-f]`, `continuum config-path`.\n\n**Port conflicts?** Every published host port is overridable via `.env` (defaults shown):\n`SESSION_REDIS_PORT=6380`, `QDRANT_PORT=6333`, `QDRANT_GRPC_PORT=6334`, `MILVUS_PORT=19530`,\n`LANGFUSE_WEB_PORT=3000`, `LANGFUSE_WORKER_PORT=3030`, `LANGFUSE_POSTGRES_PORT=5433`,\n`LANGFUSE_REDIS_PORT=6382`, `CLICKHOUSE_HTTP_PORT=8123`, `CLICKHOUSE_NATIVE_PORT=9000`,\n`MINIO_API_PORT=9090`, `MINIO_CONSOLE_PORT=9091`, `TEMPORAL_PORT=7233`, `TEMPORAL_UI_PORT=8233`,\n`TEMPORAL_POSTGRES_PORT=5434`. For the stores the SDK connects to (`QDRANT_PORT`, `MILVUS_PORT`,\n`SESSION_REDIS_PORT`), the same variable drives both the container and the client, so they stay in sync.\n\nYour first agent:\n\n```python\nimport asyncio\nfrom continuum.agent import BaseAgent, AgentRunner\n\nasync def main():\n    agent = BaseAgent(\n        name=\"hello-agent\",\n        instructions=\"You are a friendly assistant.\",\n        model=\"gpt-4o-mini\",\n    )\n    runner = AgentRunner()\n    response = await runner.run(agent, \"Hi!\")\n    print(response.content)\n\nasyncio.run(main())\n```\n\n`AgentRunner.run()` returns an `AgentResponse` with `content`, `structured_output`, `usage`, `tool_calls`, `run_artifacts`, `latency_ms`, and the full handoff chain. See the [**docs**](https://docs.continuum.shyftlabs.io/) for streaming, tools/MCP, memory, handoffs, and workflows.\n\n---\n\n## 📄 License\n\nLicensed under the [Apache License, Version 2.0](https://github.com/shyftlabs/continuum/blob/main/LICENSE). Copyright © 2025–2026 [ShyftLabs Inc.](https://shyftlabs.io/)\n\nFor commercial / enterprise inquiries — SLAs, indemnification, hosted offerings, custom features — contact **[continuum@shyftlabs.io](mailto:continuum@shyftlabs.io)**.\n\n<div align=\"center\">\n<br />\n<sub>Built with ❤️ by <a href=\"https://shyftlabs.io/\">ShyftLabs</a> · <a href=\"mailto:continuum@shyftlabs.io\">continuum@shyftlabs.io</a></sub>\n</div>","github_created_at":"2026-05-26T19:16:56+00:00","created_at":"2026-07-15T10:41:36.982407+00:00","updated_at":"2026-07-15T10:41:40.809815+00:00","categories":[{"slug":"ai-agents","name":"AI Agents","url":"https://www.graphcanon.com/categories/ai-agents","markdown_url":"https://www.graphcanon.com/categories/ai-agents.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/ai-agents"},{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"},{"slug":"vector-databases","name":"Vector Databases","url":"https://www.graphcanon.com/categories/vector-databases","markdown_url":"https://www.graphcanon.com/categories/vector-databases.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/vector-databases"}],"tags":[{"slug":"agent-framework","name":"agent-framework"},{"slug":"agentic-ai","name":"agentic-ai"},{"slug":"ai-agents","name":"ai-agents"},{"slug":"ai-orchestration","name":"ai-orchestration"},{"slug":"anthropic","name":"anthropic"},{"slug":"enterprise-ai","name":"enterprise-ai"},{"slug":"human-in-the-loop","name":"human-in-the-loop"},{"slug":"kimi-k2","name":"kimi-k2"}],"trust":{"provenance":{"is_fork":false,"github_id":1250579815,"owner_type":"Organization","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-15T10:41:38.095Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":5,"days_since_push":2,"last_release_at":"2026-07-06T17:49:11Z"},"security_summary":{"status":"findings","scanner":"osv@v1","low_count":68,"high_count":0,"last_scan_at":"2026-07-15T10:41:38.630Z","medium_count":0,"scan_profile":"deps","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-07-15T10:41:37.854Z"},"deploy":{"source":"dockerfile:docker-compose.yml","self_host":true,"observed_at":"2026-07-15T10:41:37.854Z","managed_saas":false},"has_cli":{"value":true,"source":"pyproject.toml:[project.scripts]","observed_at":"2026-07-15T10:41:37.854Z"},"languages":{"value":["python"],"source":"github.language+pyproject.toml","observed_at":"2026-07-15T10:41:37.854Z"},"has_docker":{"value":true,"source":"dockerfile:docker-compose.yml","observed_at":"2026-07-15T10:41:37.854Z"},"license_spdx":{"value":"Apache-2.0","source":"github.license","observed_at":"2026-07-15T10:41:37.854Z"}}}}