Skip to main content

PoCo: Pocket Coding for Feishu

Project description

PoCo

中文说明

PoCo is the product name. The Python package name is pocket-coding.

PoCo is a local TUI for running Codex app-server behind a Feishu bot.

  • DM the bot for management
  • Use Feishu groups as project workspaces
  • Run one Codex worker per project group
  • Stream progress back by creating and editing Feishu messages

Quick Start

Install:

pip install pocket-coding

Or from source:

pip install .

Start:

poco

Non-interactive config is also supported:

poco config app_id "cli_xxx"
poco config app_secret "your-secret"
poco config --show

In the TUI:

  1. Fill in Feishu App ID and App Secret
  2. Click Save & Restart
  3. Add the bot to a project group
  4. In that group, run:
/poco name my-project
/poco cwd /path/to/project
/poco mode mention
/poco enable

After that:

  • DM the bot with /poco workers or /poco status my-project
  • In the group, use /poco ... for PoCo commands
  • In the group, all non-/poco text is forwarded to Codex

To attach the current group worker to an existing Codex CLI session:

/poco attach <session_id>

PoCo will try to import the session working directory from local Codex state and bind the current worker to that session.

How It Works

  • DM with the bot: management console
  • Group chat with the bot: project workspace
  • Each project group gets its own Codex worker process
  • Each group must configure its own working directory before enable
  • PoCo connects to Feishu in long-connection mode, so no public callback URL is required

Commands

DM commands:

  • /poco help
  • /poco workers
  • /poco list
  • /poco sessions [limit]
  • /poco status <worker_alias|group_chat_id>
  • /poco stop <worker_alias|group_chat_id>
  • /poco reset <worker_alias|group_chat_id>
  • /poco remove <worker_alias|group_chat_id>

Group commands:

  • /poco help
  • /poco mode <mention|auto>
  • /poco attach <session_id>
  • /poco cwd <path>
  • /poco enable
  • /poco disable
  • /poco reset
  • /poco new
  • /poco name <alias>
  • /poco unname
  • /poco status
  • /poco stop
  • /poco remove

Feishu Requirements

Use a self-built enterprise app, not a custom webhook bot.

Required capabilities:

  • Bot enabled
  • Event subscription: im.message.receive_v1
  • Permission to send messages
  • Permission to update messages

Recommended:

  • Long connection mode

TUI

Views:

  • Dashboard
  • Config
  • Logs

The TUI is intentionally plain for older terminals:

  • no header/footer chrome
  • no button bar
  • simple text navigation

Shortcuts:

  • 1 or F2: Dashboard
  • 2 or F3: Config
  • 3 or F4: Logs
  • Ctrl+S: Save config
  • Ctrl+R: Save and restart
  • q: Quit

Files

  • Config: ~/.config/poco/config.json
  • State: ~/.local/state/poco/

Development

Build packages:

uv build

Quick syntax check:

uv run python -m py_compile poco/__init__.py poco/app.py poco/bridge.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pocket_coding-0.1.1.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pocket_coding-0.1.1-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file pocket_coding-0.1.1.tar.gz.

File metadata

  • Download URL: pocket_coding-0.1.1.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.14

File hashes

Hashes for pocket_coding-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6b21f351f13b665b50808a40d5fc902eb36db3fa1e0e78db270d91fb94d625f4
MD5 a319ef299ef10995a582109e67accf7b
BLAKE2b-256 9a03025d3e1f2e118a70bbc77f8b48d2476d2bc74bac23a07eaf53809b011767

See more details on using hashes here.

File details

Details for the file pocket_coding-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pocket_coding-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8bec236302fcd4edb85afcc9c3924ca59264b5362764d1ab5ee062109be52567
MD5 c57436a6b79d0b07a80b9afd36ceb684
BLAKE2b-256 156edc7360303a5649c0ac0b4a94b2ad8c9d79d1c12c78f718a0b67fef2822a6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page