Skip to main content

Personal command center for GitHub — one Kanban board that stays in sync with every project you contribute to, plus a full project management CLI.

Project description

Focal

For engineers who contribute to many GitHub repos and want structured project management — without the overhead, without context switching, without leaving the terminal.

Focal gives you one personal Kanban board that stays in sync with every project you contribute to, plus a full PM CLI for running delivery end-to-end: epics, stories, iteration planning, retros, and velocity — all in GitHub issues and markdown.

Works entirely from the terminal, no AI required. Add an agent later to accelerate — not to unlock.

AI-ready when you are — Focal ships with AGENTS.md so any capable agent can set it up, run PM commands, and manage your backlog on your behalf. For deeper integration, focal skill install wires Focal into your agent as an MCP server — every PM command becomes a callable tool.

The problem

If you're an engineer contributing across many repos, planning your day means opening every project board one by one — context switching before you've written a single line of code. And when it comes to planning a release, you're either reaching for a separate PM tool (another context switch) or keeping it in your head (no record, no accountability).

Most teams also spend energy maintaining the process itself — updating boards, attending standups for status, fielding "where are we on X?" questions. Focal makes the process self-maintaining: the board syncs automatically, plans and retros are committed to the repo, and anyone can see current status without interrupting the engineer.

Focal solves this by working inside GitHub — not beside it:

  • One board, every repo — open issues assigned to you flow onto a single personal Kanban board automatically; status changes push back to every origin project
  • GitHub-native, no new tool — everything Focal creates lives in GitHub issues and markdown files; no new login, no new subscription, no data silo
  • PM in the terminal — epics, stories, iteration planning, retros, velocity — all committed alongside your code, readable by anyone with repo access
  • Engineer as their own PM — planning is a CLI command, not a dashboard to maintain; every plan, retro, and design doc lives in git on the same timeline as your code
  • What-if before you commit — model the impact of PTO, scope injection, or a re-estimate before touching the plan
  • Opinionated conventions that scale — every repo initialized with Focal works the same way; engineers across many projects never re-learn a planning setup
  • Works without an agent — fully interactive terminal prompts mean no AI required; add an agent later to accelerate, not to unlock

Full breakdown and comparisons

What it does

Board sync

Without Focal With Focal
Open 5 project boards to see what's assigned to you One board aggregates everything automatically
Update status on your board, then update every origin project board too Move a card once — status pushes back to every origin project automatically
Closed or unassigned issues linger on your board until you remove them manually Closed or unassigned issues move to Done automatically

PM CLI — epics, stories, iteration planning, retros, and velocity — all in GitHub issues and markdown, without leaving the terminal.

Install

bash <(curl -fsSL https://raw.githubusercontent.com/leninmehedy/focal/main/install.sh)

The installer handles Python, pipx, and focal-cli in one step, then prompts you to run focal board setup — an interactive wizard that creates your GitHub Projects board and asks which repos to watch.

Full setup and usage guide

Set up with an AI agent

Open Claude Code (or any agent that can fetch a URL) and paste:

Set up Focal from https://raw.githubusercontent.com/leninmehedy/focal/main/AGENTS.md

The agent installs Focal, runs the wizard, verifies sync, and sets up the hourly scheduler — no manual steps required.

For a deeper integration, install Focal as an MCP skill so your agent can call every PM command as a structured tool — no CLI invocations needed:

focal skill install claude   # writes to ~/.claude/settings.json
focal skill install cursor   # writes to ~/.cursor/mcp.json

Once set up, you can drive everything in plain language:

  • "Add leninmehedy/focal to my sync"
  • "Plan I1 — 2-week sprint, me and @bob at 8 SP each, starting Monday"
  • "What's our iteration status?"
  • "Walk me through the I1 retro — we hit our goal" — agent asks follow-up questions for went-well, to-improve, and action items
  • "What slips if I'm out next week?"
  • "We just got a security fix dropped in — what gets pushed to I2?"

Docs

Why Focal? The motivation, philosophy, and design principles behind Focal
User Guide Install, board sync, PM CLI, scheduler, troubleshooting
PM Guide Full project management workflow — design docs, epics, delivery cycle
Testing Guide Beta testing — test cases for every command
AGENTS.md Full command reference for AI agents

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

focal_cli-1.16.0.tar.gz (159.3 kB view details)

Uploaded Source

Built Distribution

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

focal_cli-1.16.0-py3-none-any.whl (92.4 kB view details)

Uploaded Python 3

File details

Details for the file focal_cli-1.16.0.tar.gz.

File metadata

  • Download URL: focal_cli-1.16.0.tar.gz
  • Upload date:
  • Size: 159.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for focal_cli-1.16.0.tar.gz
Algorithm Hash digest
SHA256 63ad7c33891347cc3ba650bd71f8be110de35231f19078f0d9c5bdc565ec5ab3
MD5 8b906107f2bd643652a3ba4762296f23
BLAKE2b-256 7926c629064c7ec2a35aaf06c88856142c60f143f89490ecb02146ceb0d7f288

See more details on using hashes here.

Provenance

The following attestation bundles were made for focal_cli-1.16.0.tar.gz:

Publisher: publish.yml on leninmehedy/focal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file focal_cli-1.16.0-py3-none-any.whl.

File metadata

  • Download URL: focal_cli-1.16.0-py3-none-any.whl
  • Upload date:
  • Size: 92.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for focal_cli-1.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c1c2fac268d40c19140a5d2205cf2c14f0b1378878128a15db8dc0a3925ffcc4
MD5 7835bdea2a1122bdd295e9a4f17e5d10
BLAKE2b-256 df38ea7e6ea6fd151902fdf8989297be422e39cd32b0eb02a62b194e08a61ddd

See more details on using hashes here.

Provenance

The following attestation bundles were made for focal_cli-1.16.0-py3-none-any.whl:

Publisher: publish.yml on leninmehedy/focal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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