{"id":37085423,"url":"https://github.com/gurobokum/liman","last_synced_at":"2026-01-14T10:30:07.937Z","repository":{"id":299610462,"uuid":"1003577914","full_name":"gurobokum/liman","owner":"gurobokum","description":"Declarative YAML-based AgentOps framework for building composable AI agents","archived":false,"fork":false,"pushed_at":"2025-10-05T12:33:27.000Z","size":5315,"stargazers_count":11,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-27T18:34:34.154Z","etag":null,"topics":["ai-agents","ai-agents-framework","ai-application-development","framework"],"latest_commit_sha":null,"homepage":"https://liman-ai.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gurobokum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-17T11:04:13.000Z","updated_at":"2025-10-05T12:33:31.000Z","dependencies_parsed_at":"2025-06-17T12:33:48.886Z","dependency_job_id":"1d7c3d30-3f0b-4a8c-92a7-3fe70edc46bd","html_url":"https://github.com/gurobokum/liman","commit_stats":null,"previous_names":["gurobokum/liman"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/gurobokum/liman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurobokum%2Fliman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurobokum%2Fliman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurobokum%2Fliman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurobokum%2Fliman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gurobokum","download_url":"https://codeload.github.com/gurobokum/liman/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurobokum%2Fliman/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28417325,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:25:19.714Z","status":"ssl_error","status_checked_at":"2026-01-14T10:22:49.371Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","ai-agents-framework","ai-application-development","framework"],"created_at":"2026-01-14T10:30:07.268Z","updated_at":"2026-01-14T10:30:07.932Z","avatar_url":"https://github.com/gurobokum.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Liman\n\nCode-first declarative framework for building composable AI agents using YAML manifests\n\n\u003e ⚠️ **Warning:** This project is in early development phase.\n\n## Features\n\n- **Declarative YAML Configuration**: Define agents using simple YAML manifests\n- **Node-based Architecture**: Compose workflows from LLM, Tool, and custom nodes\n- **Edge DSL**: Connect nodes with conditional expressions and function references\n- **OpenAPI Integration**: Auto-generate tools from OpenAPI specifications\n- **Multi-language Support**: Built-in localization for prompts and descriptions\n- **Built-in Observability**: OpenTelemetry support with FinOps tracking\n- **Multi-runtime**: Python implementation (TS, Go planned)\n\n## Quick Start (python)\n\n```bash\npip install liman\n```\n\nCreate agent specifications in YAML:\n\n```yaml\n# agents/assistant.yaml\nkind: LLMNode\nname: assistant\ndescription: A conversational AI assistant\nprompts:\n  system: You are a helpful assistant that can check weather.\ntools:\n  - get_weather\n```\n\n```yaml\n# agents/get_weather_tool.yaml\nkind: ToolNode\nname: get_weather\ndescription:\n  en: Get current weather information for a city\nfunc: weather.get_current_weather\narguments:\n  - name: city\n    type: str\n    description:\n      en: Name of the city to get weather for\n```\n\nCreate a Python function for the tool:\n\n```python\n# weather.py\ndef get_current_weather(city: str) -\u003e str:\n    \"\"\"Get weather information for a city.\"\"\"\n    # Your weather API logic here\n    return f\"The weather in {city} is sunny, 22°C\"\n```\n\nRun the agent:\n\n```python\n# main.py\nfrom langchain_openai.chat_models import ChatOpenAI\nfrom liman import Agent\n\nllm = ChatOpenAI(model=\"gpt-4o\")\n\nagent = Agent(\n    \"./agents\",  # directory with YAML specs\n    start_node=\"assistant\",\n    llm=llm\n)\n\nresponse = agent.step(\"What's the weather like in London?\")\nprint(response)\n```\n\n## Architecture\n\nLiman represents AI agents as graphs of interconnected nodes, similar to Kubernetes manifests with Kustomize-style overlays:\n\n- **LLMNode**: Wraps LLM requests with system prompts and tool integration\n- **ToolNode**: Defines function calls for LLM tool integration\n- **FunctionNode**: Custom logic nodes for complex workflows\n- **Edges**: Connect nodes with conditional execution using custom DSL\n\n## Edge DSL\n\nLiman includes a custom Domain Specific Language (DSL) that defines the logic of executing agents through conditional expressions in node edges. The DSL supports:\n\n### Examples\n\n```yaml\nnodes:\n  # Simple condition\n  - target: success_handler\n    when: status == 'complete'\n\n  # Complex logical expression\n  - target: retry_handler\n    when: (status == 'failed' \u0026\u0026 retry_count \u003c 3) || priority == 'high'\n\n  # Function reference\n  - target: custom_handler\n    when: utils.should_process\n```\n\nThe DSL expressions are parsed at runtime and evaluated against the current execution context.\n\n## Python\n\n### Packages\n\n- [**liman**](python/packages/liman): Main package with executor and agent functionality, should be used as an entry point [![codecov](https://codecov.io/gh/gurobokum/liman/graph/badge.svg?token=PMKWXNBF1K\u0026component=python/liman)](https://codecov.io/gh/gurobokum/liman?components[0]=python/liman)\n- [**liman_core**](python/packages/liman_core): Core library with node types and YAML processing [![codecov](https://codecov.io/gh/gurobokum/liman/graph/badge.svg?token=PMKWXNBF1K\u0026component=python/liman_core)](https://codecov.io/gh/gurobokum/liman?components[0]=python/liman_core)\n- [**liman_finops**](python/packages/liman_finops): OpenTelemetry instrumentation and cost tracking.\n- [**liman_openapi**](python/packages/liman_openapi): OpenAPI to ToolNode generation [![codecov](https://codecov.io/gh/gurobokum/liman/graph/badge.svg?token=PMKWXNBF1K\u0026component=python/liman_openapi)](https://codecov.io/gh/gurobokum/liman?components[0]=python/liman_openapi)\n\n## Resources\n\n- [📖 Documentation](https://liman-ai.vercel.app/docs/poc)\n- [🔧 Specification](https://liman-ai.vercel.app/docs/specification/node)\n\n[![Docs](https://img.shields.io/badge/docs-read-brightgreen?logo=nextdotjs)](https://liman-ai.vercel.app/docs/poc)\n[![Discord](https://dcbadge.limes.pink/api/server/https://discord.gg/rmucxEzSyY?compact=true\u0026style=flat)](https://discord.gg/rmucxEzSyY) [![X Follow](https://img.shields.io/twitter/follow/liman_ai?style=social)](https://x.com/liman_ai)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgurobokum%2Fliman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgurobokum%2Fliman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgurobokum%2Fliman/lists"}