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.15.0.tar.gz (133.0 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.15.0-py3-none-any.whl (76.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: focal_cli-1.15.0.tar.gz
  • Upload date:
  • Size: 133.0 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.15.0.tar.gz
Algorithm Hash digest
SHA256 fd14abbff612f6fb858361aa3d4fe1efa70b892a7a8215c85bcb46993adc08d7
MD5 13238bd653c3f9482e26478d308fcb81
BLAKE2b-256 c94796669fe64a3e9a1d1adffc9994c0409e63d207e366c5759930c2a561918e

See more details on using hashes here.

Provenance

The following attestation bundles were made for focal_cli-1.15.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.15.0-py3-none-any.whl.

File metadata

  • Download URL: focal_cli-1.15.0-py3-none-any.whl
  • Upload date:
  • Size: 76.8 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.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 33db8dd7af0a793b2f442782c48e48d63444dfe7a1a9259fa44c21cbddf4a8f0
MD5 0c203459ebd21f52f899d0dd3908df28
BLAKE2b-256 8c925d2c76ea32333964f391716ce7aef4cefd704f05bf91fb23c0f2c6fb1aa8

See more details on using hashes here.

Provenance

The following attestation bundles were made for focal_cli-1.15.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