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:
- Fill in
Feishu App IDandApp Secret - Click
Save & Restart - Add the bot to a project group
- 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 workersor/poco status my-project - In the group, use
/poco ...for PoCo commands - In the group, all non-
/pocotext 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:
DashboardConfigLogs
The TUI is intentionally plain for older terminals:
- no header/footer chrome
- no button bar
- simple text navigation
Shortcuts:
1orF2: Dashboard2orF3: Config3orF4: LogsCtrl+S: Save configCtrl+R: Save and restartq: 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b21f351f13b665b50808a40d5fc902eb36db3fa1e0e78db270d91fb94d625f4
|
|
| MD5 |
a319ef299ef10995a582109e67accf7b
|
|
| BLAKE2b-256 |
9a03025d3e1f2e118a70bbc77f8b48d2476d2bc74bac23a07eaf53809b011767
|
File details
Details for the file pocket_coding-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pocket_coding-0.1.1-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bec236302fcd4edb85afcc9c3924ca59264b5362764d1ab5ee062109be52567
|
|
| MD5 |
c57436a6b79d0b07a80b9afd36ceb684
|
|
| BLAKE2b-256 |
156edc7360303a5649c0ac0b4a94b2ad8c9d79d1c12c78f718a0b67fef2822a6
|