Competitive Programming Operating System
Open a problem in your browser. CPOS creates the file, loads the samples, and lets you run and submit — without copy-pasting anything.
CPOS has three parts — a browser companion, a terminal app, and a VS Code extension. Install all three; they share the same files and stay in sync over localhost.
The flow:
- Pick your folder — open any folder in VS Code, or let the terminal app use
~/cpos. - Open a problem in your browser — any Codeforces or CSES problem page.
- CPOS captures it — the browser companion reads samples and sends them to CPOS on your machine.
- A file appears — e.g.
1971D.cpp, with sample tests attached. - Write your solution — in VS Code.
- Run samples — from the panel or with
Tin the terminal. - Submit — CPOS autofills the judge form in your browser (log in to Codeforces/CSES first).
No copying samples. No manually creating files.
Write code in the editor. The CPOS panel runs samples and submits.
Panel layout inspired by CPH (Competitive Programming Helper).
Install from the Marketplace. Open your folder, capture a problem from the browser, then use the CPOS panel:
- Run All — compile and test every sample
- Submit — autofill the judge submit page
- Problem — jump back to the statement
- ◑ theme — switch the panel look (5 themes, see Settings)
Browse the catalog, sync rating, track contests, and get recommendations — without opening Codeforces in a tab.
cargo install --git https://github.com/Soham109/cpos
cpos| Key | What it does |
|---|---|
o / Enter |
Open a problem — creates the file, loads samples, opens your editor |
T |
Run against samples |
s |
Submit |
b |
Open problem in browser |
U |
Open by URL |
/ · f · p |
Search · filter by rating · switch platform |
Tab |
Switch between Dashboard, Problems, Contests, Analytics, Recommend |
r |
Sync with Codeforces and CSES |
Keep the terminal running while you code in VS Code — same captures, same submits, same progress.
You choose where files go:
- VS Code: open any project folder before you capture. CPOS creates
1971D.cpp(or whatever the problem is) right inside it. - Terminal app: defaults to
~/cpos/, or point it at any directory you like.
Change the save location in Settings → Extensions → CPOS (cpos.saveLocation, cpos.fixedDir).
| What | Where |
|---|---|
| Browser companion | Chrome Web Store (Chrome, Edge, Brave) |
| VS Code extension | VS Code Marketplace |
| Terminal app | cargo install --git https://github.com/Soham109/cpos |
Install all three for the full experience. The browser companion is required for capture and submit.
The terminal app does not auto-update. Run:
cpos updateThat pulls the latest version and reinstalls. Your config and problem data are kept.
VS Code extension — updates from the Marketplace automatically (or Extensions → CPOS → Update).
Browser companion — updates automatically from the Chrome Web Store.
- Auto file creation — open a problem, get a ready-to-edit solution file in your folder
- Sample capture — public tests pulled from the problem page automatically
- Run & submit — from the VS Code panel or terminal keys; submit autofills your browser
- 13 languages — C, C++, Python, PyPy, Java, Kotlin, Rust, Go, C#, JS, Ruby, Haskell, Pascal
- Progress & analytics — rating history, topic breakdown, activity heatmap
- Recommendations — up to 30 personalized problems aimed at your weak topics (see below)
- Contests — upcoming and running Codeforces contests with countdowns
- Private — everything stays on your machine (
127.0.0.1, no external servers)
After you sync (r in the terminal), CPOS builds a list of 30 unsolved problems to practice next. Find them on the Recommend tab or the Recommended Next panel on the Dashboard.
CPOS only considers unsolved problems with a Codeforces rating in a band around your level (roughly −250 to +350 from your current rating, targeting about +100 above you).
Each candidate gets a score from:
| Signal | What it means |
|---|---|
| Weak topics | Tags where your solve rate is low get the most weight — a topic you fail 100% of the time counts more than one you're half-comfortable with |
| Multiple weak tags | Problems that combine several weak areas get a small bonus |
| Unfinished attempts | Problems you tried but didn't solve are boosted so you can finish what you started |
| Rating fit | Problems near your target practice rating score higher |
| Popularity | Well-known problems (many solves on Codeforces) are preferred — they're usually better written |
The top scorers are then diversified: CPOS caps how many problems share the same primary tag or exact rating so the list isn't fifteen identical DP problems.
If you haven't accepted anything yet, CPOS can't infer weak topics. It falls back to popular problems around 1200, spread across tags and ratings, until your submission history fills in.
Press r after solving more problems to refresh recommendations.
VS Code — Settings → Extensions → CPOS:
| Setting | Default | What it does |
|---|---|---|
cpos.saveLocation |
workspaceFolder |
Save files in your open folder |
cpos.fixedDir |
~/cpos |
Folder when save location is fixed |
cpos.defaultLanguage |
cpp |
Language for new files |
cpos.runTimeoutMs |
5000 |
Per-test timeout |
Panel themes — click ◑ theme in the CPOS panel header to switch the look. Your choice is remembered.
| Theme | Look |
|---|---|
CPOS |
Signature purple — the default |
Midnight |
Calm slate-blue |
Amber |
Warm terminal / sepia |
Paper |
High-contrast grayscale, minimal color |
Native |
Inherits your active VS Code color theme — no custom background |
Terminal app — ~/.config/cpos/config.toml (Linux) or ~/Library/Application Support/cpos/config.toml (macOS):
default_language = "cpp"
theme = "purple" # purple | cyan | green | amber | mono | plain
editor = "code {file}"
[handles]
codeforces = "your_handle"
plainis a neutral grayscale theme for a low-color terminal interface;monois the single-accent minimal one.
macOS C++: run
brew install gccif you needbits/stdc++.h— CPOS auto-detects Homebrew's g++.
- AtCoder & CodeChef support
- Contest mode with per-problem timers
- Read submission verdicts back into CPOS
MIT — see LICENSE.
CPOS is fully open source. You're free to use it, fork it, and build on it.
Contributions are welcome and appreciated — whether that's a bug report, a doc fix, a new platform, or a polish pass on the TUI. Start with CONTRIBUTING.md for dev setup and PR guidelines.
| Doc | Purpose |
|---|---|
| CONTRIBUTING.md | How to contribute |
| ARCHITECTURE.md | How the components connect |
| CHANGELOG.md | Version history |
| SECURITY.md | Report vulnerabilities |
Questions or ideas: GitHub Issues.





