Observed since 20 Oct, 21:46 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Workshop and scaffolding CLI for practical AI efficiency: learn core AI concepts, build your first agents, create useful CLIs, and adopt agent-first development patterns
Workshop and scaffolding CLI for practical AI efficiency: learn core AI concepts, build your first agents, create useful CLIs, and adopt agent-first development patterns
afi-cli) — the runtime package has no third-party dependencies.culture.yaml (suffix + backend) and the matching
prompt file for that backend (this repo ships backend: colleague →
AGENTS.colleague.md; claude → CLAUDE.md, acp → AGENTS.md,
gemini → GEMINI.md)..claude/skills/,
vendored cite-don't-import. See docs/skill-sources.md.docs/culture.md names the culture
every cloned agent inherits (agent-first CLI, cite-don't-import, learn→teach,
the all-backends rule, converge-don't-vibe, …) and cites where each tenet is
enforced. Addressable from the CLI: culture-guide explain culture.uv sync
uv run pytest -n auto # run the test suite
uv run culture-guide whoami # identity from culture.yaml
uv run culture-guide learn # self-teaching prompt (add --json)
uv run teken cli doctor . --strict # the agent-first rubric gate CI runs
| Verb | What it does |
|---|---|
whoami | Report this agent's nick, version, backend, and model from culture.yaml. |
learn | Print a structured self-teaching prompt. |
explain <path> | Markdown docs for any noun/verb path. |
overview | Read-only descriptive snapshot of the agent. |
doctor | Check the agent-identity invariants (prompt-file-present, backend-consistency). |
cli overview | Describe the CLI surface itself. |
Every command supports --json. Results go to stdout, errors/diagnostics to
stderr (never mixed). Exit codes: 0 success, 1 user error, 2 environment
error, 3+ reserved.
culture_guide/ and the culture-guide
CLI/dist name throughout pyproject.toml, the package, tests/,
sonar-project.properties, and this README.md. The name is hard-coded in
~100 places, so list every occurrence first — see the git grep discovery
command in CLAUDE.md, the authoritative rename procedure.culture.yaml with your suffix and backend.CLAUDE.md for your agent and run /init.docs/skill-sources.md).See CLAUDE.md for the full conventions (version-bump-every-PR,
the cicd PR lane, deploy setup).
A supervised, reset-surviving Telegram responder managed from the culture-guide CLI; it listens to a group and answers via an OpenAI/vLLM agent loop (strands-agents), colleague-swappable later.
Set these environment variables (via .env or your shell):
TELEGRAM_AGENT_BOT_TOKEN — your Telegram bot tokenCONSTANT_COLLEAGUE_CHAT_ID — the Telegram group/chat ID to listen onCOLLEAGUE_BASE_URL — OpenAI-compatible endpoint (default http://localhost:8001/v1)COLLEAGUE_MODEL — model name to useCONSTANT_COLLEAGUE_BOT_USERNAME — the bot's display usernameCONSTANT_COLLEAGUE_POLL_INTERVAL — seconds between getUpdates pollsculture-guide listen start # install + enable systemd --user unit (survives reboot)
culture-guide listen status # is it live?
culture-guide listen stop
culture-guide listen restart
culture-guide listen logs # prints the journalctl --user command
Pipeline: telegram-agent (receive getUpdates + send) → relevance gate (tag-override bypass; else reranker B → chat A cascade on the lobes vLLM endpoint; A-only fallback) → strands-agents agent loop (the mind) → reply; per-chat memory via eidetic; supervised by a systemd --user unit with lingering so it resumes after a server reset.
This added two runtime deps (telegram-agent[telegram], strands-agents[openai]) — culture-guide is no longer zero-third-party-dep.
Apache 2.0 — see LICENSE.
pypistats · 58 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-20 – 2026-10-20 | 3 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-18 – 2026-10-18 | 6 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-17 – 2026-10-17 | 11 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-16 – 2026-10-16 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-15 – 2026-10-15 | 3 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-14 – 2026-10-14 | 3 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-13 – 2026-10-13 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-12 – 2026-10-12 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-11 – 2026-10-11 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-10 – 2026-10-10 | 19 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-09 – 2026-10-09 | 3 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-08 – 2026-10-08 | 13 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-06 – 2026-10-06 | 20 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-05 – 2026-10-05 | 13 | 2026-10-21T09:40:45.7071731Z |
| 2026-10-02 – 2026-10-02 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-30 – 2026-09-30 | 3 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-28 – 2026-09-28 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-27 – 2026-09-27 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-26 – 2026-09-26 | 3 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-25 – 2026-09-25 | 6 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-23 – 2026-09-23 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-20 – 2026-09-20 | 24 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-18 – 2026-09-18 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-17 – 2026-09-17 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-16 – 2026-09-16 | 6 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-14 – 2026-09-14 | 8 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-13 – 2026-09-13 | 22 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-12 – 2026-09-12 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-07 – 2026-09-07 | 4 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-06 – 2026-09-06 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-04 – 2026-09-04 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-09-03 – 2026-09-03 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-31 – 2026-08-31 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-27 – 2026-08-27 | 22 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-26 – 2026-08-26 | 4 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-24 – 2026-08-24 | 5 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-23 – 2026-08-23 | 4 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-22 – 2026-08-22 | 22 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-19 – 2026-08-19 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-18 – 2026-08-18 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-17 – 2026-08-17 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-14 – 2026-08-14 | 6 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-09 – 2026-08-09 | 8 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-06 – 2026-08-06 | 9 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-05 – 2026-08-05 | 4 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-04 – 2026-08-04 | 5 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-03 – 2026-08-03 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-08-01 – 2026-08-01 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-07-31 – 2026-07-31 | 11 | 2026-10-21T09:40:45.7071731Z |
| 2026-07-30 – 2026-07-30 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-07-29 – 2026-07-29 | 4 | 2026-10-21T09:40:45.7071731Z |
| 2026-07-28 – 2026-07-28 | 1 | 2026-10-21T09:40:45.7071731Z |
| 2026-07-27 – 2026-07-27 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-07-26 – 2026-07-26 | 2 | 2026-10-21T09:40:45.7071731Z |
| 2026-07-25 – 2026-07-25 | 4 | 2026-10-21T09:40:45.7071731Z |
| 2026-07-24 – 2026-07-24 | 7 | 2026-10-21T09:40:45.7071731Z |
| 2026-07-23 – 2026-07-23 | 2 | 2026-10-21T09:40:45.7071731Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.10.0 | 11 Jul 2026 | 2 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 21:46 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:27a86c3f0973a16cb04a4916180ff475220bfbd0664757b3f4bb608c87c9a46a