{"adoption": {"forks": 205, "observed_at": "2026-08-28T04:04:08.933306+00:00", "stars": 1257}, "canonical_url": "https://ross.abutalabs.com/products/loushang", "card": {"archived": false, "artifact_type": "cli-tool", "description": "AI-native agent harness for coding workflows by python: multi-model LLM orchestration, stateful sessions, tool governance,   traceable delivery, and provider routing for GPT, Claude, DeepSeek, Qwen, Kimi, GLM, and MiniMax.", "domain": ["large-language-models", "developer-tools"], "enriched": true, "function": ["agent-framework", "llm-inference", "cli", "developer-tools", "workflow-automation", "chatbot"], "health_score": 80, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "experimental", "member_repos": ["zhnt/loushang"], "name": "zhnt/loushang", "platform": ["python", "cli", "cross-platform", "windows"], "pushed_at": "2026-08-26T14:28:29+00:00", "repo": "zhnt/loushang", "stars": 1257, "tags": ["agent-harness", "coding-agent", "model-routing", "multi-provider", "persistent-sessions", "tool-governance", "terminal-ui", "vibe-coding", "extensions", "ai-agents", "command-line", "automation", "linux", "macos"], "topics": ["agent", "claude", "claude-code", "codex", "coding", "deepseek", "glm", "harness", "kimi", "minimax", "python", "skills", "workflow", "agentic", "ai", "chatgpt", "vibe-coding", "agent-harness", "dynamic-workflows", "parallel-agents"], "urls": [], "use_cases": ["run an AI coding agent from the terminal", "route coding tasks across GPT, Claude, DeepSeek, Qwen, Kimi, GLM, and MiniMax models", "resume and fork long coding agent sessions", "govern which tools an AI agent can execute", "add project-level custom tools and hooks to an agent workflow", "trace and audit AI-assisted delivery of code changes"], "what_it_is": "Loushang is an AI-native agent harness for coding workflows, delivered as a Python CLI and terminal workbench (`loushang code`) with multi-model provider routing, persistent resumable sessions, and governed tool execution. It treats methods, sessions, tools, and extensions as runtime objects to make complex AI-driven work reliable, recoverable, and auditable.", "when_to_avoid": ["you need a production-stable tool - the project is in early development", "you want a GUI or IDE plugin rather than a CLI/terminal workbench", "you only need a simple single-model chatbot without session or tool governance", "you cannot install Python tooling or run projects from source"], "when_to_choose": ["you want a Claude Code-style terminal coding agent with multi-provider model routing", "you need persistent, resumable, auditable agent sessions for complex coding work", "you want to extend an agent harness with custom Python tools and hooks", "you prefer running an open-source coding agent locally from source"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/loushang", "repo": "zhnt/loushang", "role": "main", "score": 58}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:07:13.746542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56873f32e12fdea420b6b6fb037eb8119fc286ade1af5594c42be69b589c402f", "fetched_at": "2026-08-28T04:04:08.933306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhnt/loushang"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:07:13.746542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56873f32e12fdea420b6b6fb037eb8119fc286ade1af5594c42be69b589c402f", "fetched_at": "2026-08-28T04:04:08.933306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhnt/loushang"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:07:13.746542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56873f32e12fdea420b6b6fb037eb8119fc286ade1af5594c42be69b589c402f", "fetched_at": "2026-08-28T04:04:08.933306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhnt/loushang"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:07:13.746542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56873f32e12fdea420b6b6fb037eb8119fc286ade1af5594c42be69b589c402f", "fetched_at": "2026-08-28T04:04:08.933306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhnt/loushang"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:07:13.746542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56873f32e12fdea420b6b6fb037eb8119fc286ade1af5594c42be69b589c402f", "fetched_at": "2026-08-28T04:04:08.933306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhnt/loushang"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:07:13.746542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56873f32e12fdea420b6b6fb037eb8119fc286ade1af5594c42be69b589c402f", "fetched_at": "2026-08-28T04:04:08.933306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhnt/loushang"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.933306+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:07:13.746542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56873f32e12fdea420b6b6fb037eb8119fc286ade1af5594c42be69b589c402f", "fetched_at": "2026-08-28T04:04:08.933306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhnt/loushang"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:07:13.746542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56873f32e12fdea420b6b6fb037eb8119fc286ade1af5594c42be69b589c402f", "fetched_at": "2026-08-28T04:04:08.933306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhnt/loushang"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:07:13.746542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56873f32e12fdea420b6b6fb037eb8119fc286ade1af5594c42be69b589c402f", "fetched_at": "2026-08-28T04:04:08.933306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhnt/loushang"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:07:13.746542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56873f32e12fdea420b6b6fb037eb8119fc286ade1af5594c42be69b589c402f", "fetched_at": "2026-08-28T04:04:08.933306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhnt/loushang"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 6, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 96, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 58, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}