RepoDaily · 2026-07-29 · Infrastructure / Runtime

QwenPaw brings the personal-assistant runtime onto your own machine — channels, skills, and a single-operator trust model

#3 Infrastructure / Runtime Python +818 agentscope-ai/QwenPaw Open repository

agentscope-ai/QwenPaw packages a self-hostable agent runtime that bridges DingTalk, Feishu, Discord, iMessage, and more through an extensible Skills layer and a documented single-operator security model.

Repo typeInfrastructure / Runtime
Best forSolo builders and small labs that want a local-first agent runtime with named chat channels, scheduled tasks, and a pluggable Skills layer rather than a hosted SaaS assistant.
Risk levelMedium — early project with a documented but narrow trust model; review config, channels, and skills before exposing the instance.
Time to evaluateHalf a day to install via PyPI, run `qwenpaw init`, connect one channel, and test one built-in skill such as cron or PDF handling.

Primary question: Does the single-operator trust boundary match how your team wants to run a personal assistant, or do you need per-user isolation QwenPaw explicitly does not provide?

91/100

RepoDaily adoption score

RepoDaily rates this as 91/100 (strong) for adoption: evidence, installation path, production risk, differentiation, license clarity, and AI/agent fit are scored from the article sources and adoption notes.

Directional score from RepoDaily sources and adoption notes, not a benchmark.Risk: Medium
100Evidence quality

6 source(s) across 3 source category/categories, plus a RepoDaily-specific evidence module when available.

100Installability

6 workflow step(s), 5 next-action step(s), and 4 command/install signal(s) were detected.

67Maintenance confidence

Trending momentum is +818 stars, with maintenance/release/issue signals counted when present.

96Production readiness

Risk is marked medium, with 6 security note(s) and 4 explicit skip condition(s).

100Differentiation

3 opportunity lens item(s), 4 alternative(s), and 3 type-specific section(s) support differentiation.

82License clarity

License source or license wording is present.

78Agent / AI fit

5 AI/agent-related signal(s) were detected in the article text and metadata.

Project overview

QwenPaw is a Python-based personal AI assistant from the agentscope-ai organization that runs inside your own environment — a laptop, a server, or a cloud host you control. The project description and pyproject.toml are explicit: all data and tasks run on your machine, with no third-party hosting of conversations or credentials. The package is built on agentscope 2.0.4.post1 and depends on a wide but intentional set of libraries for chat channels, scheduling, browser automation, and local model serving.

Where most agent frameworks focus on orchestration primitives, QwenPaw focuses on the operator surface. It ships two console entry points — `qwenpaw` and `copaw` — both pointing at `qwenpaw.cli.main:cli`, and an init command (`qwenpaw init`) that walks the operator through setup while displaying a security notice about the trust model. The README pitches the project as 'Your Personal AI Assistant; easy to install, deploy on your own machine or on the cloud; supports multiple chat apps with easily extensible capabilities.'

The extensibility story is centered on Skills and channels. CONTRIBUTING.md lists DingTalk, Feishu, QQ, Discord, and iMessage as chat targets, and pyproject.toml adds Telegram, Slack, Twilio, Matrix, and WeCom through their respective SDKs. Built-in skills named in the package description include cron, PDF/Office handling, news digest, and file reading, and the CONTRIBUTING guide invites new channels, model providers, and skills from outside contributors. The security model is published in SECURITY.md and is explicitly aligned with what users see during `qwenpaw init`.

Problem it solves

  • Operators who want one assistant across many chat apps usually face a stack of per-app bots with no shared skills or memory.
  • Hosted assistant services put conversation data and credentials in a vendor cloud, which conflicts with privacy, compliance, or air-gapped requirements.
  • Generic agent SDKs provide planning primitives but not the operator-facing UX: init flow, channels, scheduled tasks, skill marketplace, or a local TUI.
  • Multi-channel bots that handle file reading, PDF/Office parsing, and browser automation typically require custom glue per channel.
  • Adding a new model provider or channel often means forking rather than contributing back, because the upstream project lacks contribution conventions.

How it works

  1. Install from PyPI (`pip install qwenpaw`) on Python 3.11 through <3.14, as declared in pyproject.toml.
  2. Run `qwenpaw init`, which presents the security notice documented in SECURITY.md and configures credentials, channels, and skills.
  3. Pick one or more chat channels — DingTalk, Feishu, QQ, Discord, iMessage, Telegram, Slack, Twilio, Matrix, or WeCom — using their bundled SDKs.
  4. Select a model provider; CONTRIBUTING.md states providers must be natively compatible with the OpenAI `chat.completions` API or the Anthropic `messages` API, and lists DashScope, ModelScope, Ollama, and LM Studio as examples.
  5. Enable built-in Skills such as cron, PDF/Office handling, news digest, and file reading, or add custom skills following the contribution guide.
  6. Use the bundled `qwenpaw` TUI (or `copaw` alias) for a local streaming-Markdown console, or expose the assistant over your configured chat channels.

Product demo and interface preview

QwenPaw TUI
QwenPaw TUI — The bundled Textual-based TUI that ships with the `qwenpaw` CLI entry point. README.md image

Architecture read: runtime, channels, skills, and security layers

  • Entry point: `qwenpaw = "qwenpaw.cli.main:cli"` with a mirror alias `copaw`, as declared in `[project.scripts]`.
  • Agent runtime: pins `agentscope==2.0.4.post1` and `agent-client-protocol>=0.9.0,<0.11.0` for agent communication.
  • Channel SDKs: `dingtalk-stream`, `alibabacloud-dingtalk`, `lark-oapi` (Feishu), `discord-py`, `python-telegram-bot`, `slack-bolt`, `twilio`, `wecom-aibot-python-sdk`, `matrix-nio`, and others.
  • Scheduling: `apscheduler>=3.11.2,<4` backs the cron skill named in the package description.
  • Browser and screen: `playwright>=1.49.0` and `mss>=9.0.0` enable web tasks and screen capture.
  • Local TUI: pins `textual>=8.2.8,<8.2.9`, with the upper bound tied to upstream fixes for Textualize/textual#6592 and #6643.
  • Security surfaces: packaged rule directories `security/tool_guard/rules/**` and `security/skill_scanner/rules/**` indicate a tool guard and a skill scanner run inside the package.
  • Coding Mode: bundles `python-lsp-server[all]>=1.10` as a zero-config LSP fallback and `ast-grep-cli>=0.20` for multi-language AST pattern matching.

Deployment notes from pyproject.toml and SECURITY.md

QwenPaw targets `requires-python = ">=3.11,<3.14"`, so operators need Python 3.11, 3.12, or 3.13. The pinning on `anyio>=4.0.0,<4.13.0` exists because anyio 4.13.0 introduced a busy-loop / getpid storm tracked as QwenPaw#2632 — operators who override dependency resolution should keep this upper bound. The `openai` pin is `>=2.0.0,<=2.33.0`, and `onnxruntime<1.24` is capped for local inference compatibility.

SECURITY.md states the trust model is aligned with `qwenpaw init`, and that the init flow shows a security notice covering the single-operator boundary, shared delegated authority when multiple people message the same instance, allowlists for channels and users, separate config and credentials per trust boundary, least-privilege sandboxing, and keeping secrets out of the working directory and skill-accessible paths. The same document says the SECURITY_WARNING text lives in `src/qwenpaw/cli/init_cmd.py`, and asks maintainers to keep both surfaces consistent.

How QwenPaw differs from other self-hostable agent runners

  • Versus agent orchestration SDKs: QwenPaw ships an operator-facing CLI, init flow, channels, and a TUI; SDKs leave those to the user.
  • Versus hosted assistant SaaS: QwenPaw keeps data on the operator's host and exposes the full Python source under Apache 2.0.
  • Versus per-channel bot templates: QwenPaw unifies DingTalk, Feishu, QQ, Discord, iMessage, Telegram, Slack, Twilio, Matrix, and WeCom behind one Skills layer.
  • Versus closed-source coding assistants: Coding Mode is an open, local fallback built on `python-lsp-server` and `ast-grep-cli`, not a remote IDE plugin.

Who should pay attention?

Good fit if

  • You want one assistant that lives on your own machine and talks to chat apps your team already uses.
  • You need scheduled tasks, file reading, PDF/Office handling, or news digests as first-class built-in skills.
  • You are comfortable running Python 3.11–3.13 and editing YAML-style config files.
  • You want to contribute new channels, model providers, or skills under Conventional Commits and Apache 2.0.

Skip for now if

  • You need per-user, multi-tenant authorization on a shared instance — SECURITY.md explicitly says that model is out of scope.
  • You require a vendor SLA, paid bug bounty, or enterprise support — the project states there is no bug bounty program and no budget for paid reports.
  • You want prompt-injection hardening as a primary feature — prompt injection without a trust-boundary bypass is listed as out of scope.
  • You cannot pin `agentscope`, `textual`, `openai`, `anyio`, or `onnxruntime` to the project's declared ranges.

Risks and cautions

Medium

The project has a clear, documented security model and a clean install path, but the single-operator trust boundary and the early-stage pinning surface mean operators must review config, channels, and skills before exposing the instance.

  • SECURITY.md is explicit that per-user multi-tenant authorization on a shared instance/config is not supported.
  • Prompt injection without a demonstrated trust-boundary bypass is out of scope, which puts responsibility on the operator to sandbox skills.
  • Dependency pins such as `anyio<4.13.0`, `textual<8.2.9`, and `openai<=2.33.0` indicate active compatibility work; overriding them can reintroduce known bugs.
  • There is no bug bounty program and no budget for paid reports, so disclosures rely on voluntary responsible reporting.
  • The project is relatively new at trending rank 3 with 818 period stars; long-term maintenance cadence is not yet established.
  • Trust model: single-operator boundary, with shared delegated authority when multiple people message the same instance (SECURITY.md).
  • Init alignment: `qwenpaw init` displays a security notice mirrored in `src/qwenpaw/cli/init_cmd.py`.
  • Packaged guards: `security/tool_guard/rules/**` and `security/skill_scanner/rules/**` are bundled in the wheel.
  • Out of scope: prompt-injection-only chains without a boundary bypass, operator-intended local features framed as injection, and authorized-user actions framed as privilege escalation.
  • Disclosure route: vulnerabilities are reported through the Alibaba Security Response Center (ASRC).
  • Acceptance gate requires exact vulnerable path, tested version or commit SHA, reproducible PoC, and demonstrated impact tied to documented trust boundaries.

Alternatives to compare

ApproachWhen to useTrade-off
OpenHands
You want an open-source agent runtime focused on software-engineering tasks rather than personal chat channels.Apache 2.0; self-host.
AgentScope (runtime upstream)
You want the orchestration runtime QwenPaw builds on, without the channel and skills packaging.Apache 2.0; self-host.
Dify
You need a visual LLMOps platform with hosted and self-hosted options and a broader app-store model.Open-source self-host plus hosted tiers.
n8n
Your need is multi-channel automation and scheduled tasks more than LLM-first assistant behavior.Sustainable Use License; self-host.

What this trend reveals

Channel adapters for underserved chat apps

CONTRIBUTING.md invites new channels, and the existing set already spans DingTalk, Feishu, QQ, Discord, iMessage, Telegram, Slack, Twilio, Matrix, and WeCom. Apps not in that list — such as Signal, Teams, or regional messengers — are natural PR targets.

Open an issue on the QwenPaw issue tracker proposing the channel, confirm scope with maintainers, and follow the `feat(channels): ...` commit convention.

Custom Skills on top of the built-in set

The built-in skills (cron, PDF/Office, news digest, file reading) demonstrate the extension surface. Skills that combine `playwright` for browser flows with `apscheduler` for cron would exercise parts of the runtime that already ship.

Write a skill that reuses existing dependencies from pyproject.toml so it does not bloat the install, and add tests following the local `pytest` gate.

Model-provider contributions beyond DashScope and Ollama

CONTRIBUTING.md says providers must be OpenAI `chat.completions`- or Anthropic `messages`-compatible and lists DashScope, ModelScope, Ollama, and LM Studio. Providers that meet that bar but are not yet integrated are straightforward additions.

File an issue with the provider's API compatibility details and a proposed `feat(models): ...` PR scope.

Best next action

Install QwenPaw on a throwaway host, run init, and connect one chat channel

The shortest path to a real read is to install from PyPI, run `qwenpaw init`, read the full security notice, connect one low-risk channel such as Discord or Telegram, and enable one built-in skill such as cron. This exercises the CLI, the init security surface, the channel SDK path, and the Skills layer without exposing production credentials.

  1. Provision a Python 3.11–3.13 environment on a machine you control.
  2. Run `pip install qwenpaw` and `qwenpaw init`; read and save the security notice shown during init.
  3. Configure exactly one channel (for example, Discord via `discord-py`) using a throwaway bot token.
  4. Enable the `cron` skill or another built-in skill and trigger it once from your chat client.
  5. Inspect logs and the working directory to confirm no secrets are written outside expected paths, then decide whether to add more channels or custom skills.

RepoDaily verdict

QwenPaw is a credible local-first personal-assistant runtime: it packages a real agent runtime, a broad set of chat channels, a Skills layer, and a documented single-operator security model. Operators who accept that trust boundary — and the project's early-stage dependency pins — get a self-hostable assistant they can extend under Apache 2.0. Teams that need multi-tenant isolation or vendor-backed support should look elsewhere.

Sources