Share ideas, build with coding agents and hang out. A free, open-source Windows studio shaped with its community.
See the code
Bring an idea. Find your people. Make it together.
Download 0.4.4 for Windows · Watch the 40-second showreel
Explore Studio · Join our Discord · Read the guide
Build your ideas with coding agents, share work in progress with the community, or just come hang out. Studio is a free Windows app, shaped with the people who use it.
Quick links: What's new · Install · First launch · Tour · Keys and privacy · Community · Docs · Contributing
Read the 0.4.4 release notes or the full changelog. Existing portable installations can check App updates. The showreel above uses sample tasks from the earlier 0.4.2 release.
| Needed for | Notes | |
|---|---|---|
| Windows 10/11 | Everything | Keys are protected by the Windows keystore (DPAPI). Other platforms are untested. |
| Node 24 + npm | Running from source | npm ci downloads Electron once (about 110 MB), and stops at once on an older Node. The portable build needs neither. |
| Git | Cloning; recommended at runtime | Studio reads the open project through git to verify a result that claims a commit, warn agents about staged or uncommitted work and add history to the project map; Friends › Your PCs and opt-in worktree runs need it. Without git those checks are skipped or read as unknown. |
| Python 3 | npm test only | Found as python, py -3 or python3; the py launcher that python.org's installer adds by default is enough. |
| A builder CLI (optional) | Building tasks | opencode is preferred; claude, codex, grok and agy are detected. Without one Studio still plans, chats and browses the catalog, but no build can start. |
| An API key or local model (optional) | The companion | z.ai, OpenCode Go or Zen, OpenRouter, a CLI login, LM Studio or any OpenAI-compatible endpoint. |
git clone https://github.com/nateecho32-stack/mefi-studio.git
cd mefi-studio
npm ci # once; downloads Electron
npm run build-booklet # bundles renderer/ into the committed renderer/booklet.html
npm start
npm start needs a normal shell. If ELECTRON_RUN_AS_NODE is set (some agent harnesses set it), Studio refuses to start and prints the fix.Run Mefi's Studio AI+.cmd starts the portable build when one exists in dist/, otherwise the source install.Mefi Studio AI+.exe. Its tasks, ideas, plans and conversations stay in its own resources\app\data folder. Settings, saved keys, the project list, the Discord link and resume state live in %APPDATA%\Mefi's Studio AI+, shared with a source install on the same Windows account, so only one of the two runs at a time: opening the other brings the running one forward.npm run start:web serves a browser-only preview on http://localhost:4173; it cannot launch workers.Choose a project on the launch screen, then Open studio (agents stay off) or Open and start agents. Nothing runs before you choose. If a crash or a restart interrupted work in the last ten minutes, Studio skips the question, reopens that folder and restarts the agents that were running; closing the studio yourself always brings the question back.
Follow the walkthrough. Start here opens on the first launch with seven short stops: scan, workspace, first map, connections, create, monitor, review. Each stop's Walk with me opens the real menu and highlights the control. It remembers your place.
At Scan or First map, choose an existing Codex, Claude Code, Grok or Antigravity login, or Install and sign in. Check connection, then Use for the whole studio routes mapping, chat, planning, agents and coding through that account. Have an API key (z.ai, OpenCode Go or Zen, OpenRouter, a custom endpoint) or a local server (LM Studio, Ollama) instead? I have an API key or a local model server takes you to Connections and scans again when you return. OpenCode is optional. See guided CLI setup for installation and account limits.
Check the connection. A fresh install runs auto setup by itself on the first launch, from the keys, CLIs and local servers already on the machine, and Settings › Connections says what it chose. Press Run auto setup again after adding a key or CLI, or configure a provider there. No key yet? The catalog, manual planning and saved work all work without one.
Give one clear task and watch it move from Ready to Working to Review.
GETTING_STARTED.md covers the same path in detail, including what every task state means and what to do next.
Vibe puts conversation, task creation, work in progress and decisions on one screen. Its Needs you drawer handles questions, build approvals and blocked tasks. Open other tools from its dock and return to Vibe from the top of the rail. Switch to Build for the full workspace described below; Studio remembers which mode you use.
The menu down the left edge opens Home, Work, Agents and Friends, with section-local Back/Forward navigation for pages. Friends opens the companion's existing Friends menu; its Rooms, Your PCs and Playground links go straight to the matching card. Agents contains Overview, Setup, Live, Workflows, Models and Usage. It stays open by default in wide windows; Keep menu open saves your preference. Settings, Search (Ctrl K) and Help stay at its foot. Help contains Start here, Shortcuts (?) and Community. The project selector at the top switches projects, and Ctrl , opens Settings from anywhere.
H)The home screen. Studio at a glance shows the service state with a single Pause / Resume, running workers, what needs you, what is up next, the machine gauge and today's usage. Below it: the conversation with Chat and Create task, and Your work (Queue, Ideas, Review, Done). Expand Queue settings to change Auto build or Agent mode.
D)
Every session, task and agent is a node. Agents orbit the assistant, fly to the task they work on, and say what they are doing in speech bubbles. The panel on the right holds Work, Assistant, Runs (recent builds grouped by task) and Ask, where agents wait for your decision with a recommended option. Agents in the top toolbar opens queue settings and links to full team setup.
4 or Ctrl ,)
Settings keeps General, Appearance, Audio and System. Connections, model routing, team roles and workflow behavior now live in Agents › Setup. Find a setting searches individual controls and opens the matching category and disclosure. Connection forms and advanced options expand in place. Appearance includes Focus, Studio and Atmosphere presets and the live canvas preview. Agents and the companion share confirmed operational controls.
The main menu groups the app into Home, Work, Agents and Friends. See Unified Studio for team presets, configuration scope, scrollbar-free navigation and the adaptive companion. The 0.4.5 scope records what is included in the next release and what is deferred. A local navigation row exposes each group's tools, while Settings, Search and Help stay available. See the interface inventory for the full set of screens and interior menus.
Tasks (T) with briefs, prerequisites, attempts and evidence · Plans (P) that turn an unclear idea into a specification and tasks · Ideas (I) inbox · Model catalog (1) and Performance (2), plus Usage and Context · Activity & evidence (3), a read-only view of the coding sessions · Sessions (E), Analyzer (A), Overhead (O), Appearance (U), and the Performance profiler · Search Studio (Ctrl K) finds any page, tool, task, setting or model · ? lists every shortcut.
The full feature walkthrough, in Studio's own vocabulary with a glossary, is in docs/architecture.md.
$env:MEFI_STUDIO_KEY = "<key>"; npx electron . --set-key, then Remove-Item Env:MEFI_STUDIO_KEY (while it is set it overrides the saved key). .env.example pairs every --set-*-key flag with its variable.data/curated.json and data/models.json. Tasks, conversations, settings, databases and captures stay local and are never packaged.The Void Engine Discord is where people share projects, ask for feedback and hang out while they build. Unfinished ideas are welcome. Come meet Studio, our new Discord bot, and help shape what it becomes.
Rooms (Friends › Rooms, on the Void Engine room service) lists your rooms and the listed ones you can join. You can Ask to join with a short note, or accept or decline an invite. For rooms you own, you can let requesters in or decline them, invite people by name, lock or close the room, and make new rooms (hangout or cowork, open to requests or invite-only, listed or not). Each room has its chat, shown as plain text with @names; links are never clickable. A message that does not go through stays in the box with the reason. Invites and requests waiting for you are counted on the Friends bubble. Rooms need the room service's address in the build and a linked Discord account; until then the panel says what is missing.
Every theme and node style is free in 0.4.4, including the Void collection. Discord membership is optional.
Shared watch-and-listen rooms in the desktop app are still rolling out and need a configured rooms hub and Discord connection. The personal media player is available now. In-app cowork rooms and an optional “Hey Studio” voice popup are future ideas, not features included in 0.4.4.
The community guide explains what's available. Public site and voice direction records the website's location, public naming and proposed voice integration.
GitHub is the meeting point. Each PC keeps its own clone, and the open project's default branch on GitHub is the one shared state.
main. Opening it only looks. Sync this PC pulls what your other PCs pushed and pushes this PC's commits on the default branch, but only after the project's own npm run check passes. It never overwrites uncommitted work, merges diverged histories or force-pushes.npm run sync does the same from a terminal (--rebase to put your commits on top, --no-check to skip the check).npm run sync refuses to push it and names the merge and the files; the session hook and Your PCs list recent ones. A deliberate choice is recorded with a Lost-work-ok: <why> line in the merge's commit message (or --allow-lost-work for one push). The generated booklet and TESTRUNS rows are exempt.node scripts/sync.mjs --hook at the start of each new session (.claude/settings.json). The hook fetches, fast-forwards main when it can, and hands the report to Claude. AGENTS.md has the working rules.Claude Code sessions and local branches stay on the PC that made them. Anything another PC needs belongs on GitHub.
Share between my PCs (inside Your PCs) moves what you choose between your own PCs through one private GitHub repository, <you>/mefi-studio-vault. Every file in it is sealed (AES-256-GCM) with a key that only your paired PCs hold in Windows' protected storage, so GitHub cannot read it. Make the vault on your first PC, then type its pairing code on each other PC. Nothing goes until you tick it, and Studio checks every item on the way out and again on the way in.
Share with friends saves one item (a brain, a recipe, a team setup, model results, a memory note or your preferences) to a .mefishare file you send however you like. Studio removes paths, user and PC names, emails, addresses and the repository name, refuses anything with a secret in it, and shows you exactly what the file holds first. Opening a friend's file runs the same review; a risky one is kept out, and a clean one goes to your library for you to use.
npm run test:fast # Node suites without the Electron fixtures (about 20 s)
npm run check # targets, spec collisions, CSS merge + unused, syntax, TESTRUNS
npm run lint # eslint, check-only
npm test # the gate: Node suites + Electron fixtures + Python contracts
npm run audit # renderer/template contract audit
npm test needs Python 3 (python, py -3 or python3) and a real desktop: nine suites drive Electron windows and are timing-sensitive. CONTRIBUTING.md explains the gates and conventions; TESTRUNS.md is the maintainers' lab notebook of past runs and flake triage, not a guide.
| Read this | For |
|---|---|
| GETTING_STARTED.md | First launch, new-machine checklist, your first task, what each state means |
| docs/architecture.md | Glossary and the detailed feature walkthrough |
| docs/code-map.md | Which file does what, folder by folder, and where to look first |
| docs/agent-loop.md | How a chat message becomes a verified task, with file references |
| docs/performance.md | Measurements and how to reproduce them |
| docs/community.md | The Void Engine Discord link: the weekly card, the login, what is stored, unlinking and the fork switch |
| docs/remote.md | Reach your PCs from Discord: what a DM can and cannot do, the PIN, alerts, and the hub protocol |
| docs/ux-audit.md | The UX audit and its phased plan |
| docs/fleet-overhaul-plan.md | The fleet overhaul: seats, pods, missions and Refocus from OpenRig, Live › Fleet, and the phase plan |
| docs/pi-provider-storage.md | How pi's coding agent stores provider config, and the settings/auth split Studio adopted from it |
| CONTRIBUTING.md | Check gates, test-file rules, parallel-session etiquette |
| SECURITY.md · CHANGELOG.md | Reporting and what changed |
| docs/archive/ | Historical audits and handoffs, kept for the reasoning |
Studio can launch the author's LÖVE game from Settings › Integrations when a checkout is found (MEFI_STUDIO_GAME_ROOT, or a sibling 2d-Trippy-Hell or 2d Trippy Hell folder). A fresh clone works without it.
Issues and pull requests are welcome. Start with CONTRIBUTING.md; the pull-request template lists the three gates. Bug reports are most useful with the version, the install kind, the selected route and builder, and the task state you saw.
Settings › Discord Server Styler starts the separate Server Styler project and opens its local dashboard. Start Server Styler installs dependencies and builds the web app when needed, then runs the dashboard and bot. Stop ends a process started by Mefi. The status line reports when the bot is online or still needs setup.
Keep Server Styler in a sibling discord-server-styler/ checkout. Set
MEFI_STYLER_ROOT to its absolute path if it lives elsewhere. Studio can still
find the former Discord Bot/ directory under the optional game checkout.
The card stays out of Settings until Studio finds one of these.
Bot credentials stay in Server Styler's ignored .env, outside this repository.
Create that file from .env.example, set DASHBOARD_PASSWORD, then use the
dashboard's Discord sign-in and setup wizard to connect the bot to a server.
Rebuild the portable desktop app with npm run package after Studio source
changes.
MIT © 2026 MefiMaxi
116 followers · starred Sep 2026
JavaScript
68.5%
HTML
24.3%
Python
4.0%
CSS
3.2%
Share ideas, build with coding agents and hang out. A free, open-source Windows studio shaped with its community.
See the code
Bring an idea. Find your people. Make it together.
Download 0.4.4 for Windows · Watch the 40-second showreel
Explore Studio · Join our Discord · Read the guide
Build your ideas with coding agents, share work in progress with the community, or just come hang out. Studio is a free Windows app, shaped with the people who use it.
Quick links: What's new · Install · First launch · Tour · Keys and privacy · Community · Docs · Contributing
Read the 0.4.4 release notes or the full changelog. Existing portable installations can check App updates. The showreel above uses sample tasks from the earlier 0.4.2 release.
| Needed for | Notes | |
|---|---|---|
| Windows 10/11 | Everything | Keys are protected by the Windows keystore (DPAPI). Other platforms are untested. |
| Node 24 + npm | Running from source | npm ci downloads Electron once (about 110 MB), and stops at once on an older Node. The portable build needs neither. |
| Git | Cloning; recommended at runtime | Studio reads the open project through git to verify a result that claims a commit, warn agents about staged or uncommitted work and add history to the project map; Friends › Your PCs and opt-in worktree runs need it. Without git those checks are skipped or read as unknown. |
| Python 3 | npm test only | Found as python, py -3 or python3; the py launcher that python.org's installer adds by default is enough. |
| A builder CLI (optional) | Building tasks | opencode is preferred; claude, codex, grok and agy are detected. Without one Studio still plans, chats and browses the catalog, but no build can start. |
| An API key or local model (optional) | The companion | z.ai, OpenCode Go or Zen, OpenRouter, a CLI login, LM Studio or any OpenAI-compatible endpoint. |
git clone https://github.com/nateecho32-stack/mefi-studio.git
cd mefi-studio
npm ci # once; downloads Electron
npm run build-booklet # bundles renderer/ into the committed renderer/booklet.html
npm start
npm start needs a normal shell. If ELECTRON_RUN_AS_NODE is set (some agent harnesses set it), Studio refuses to start and prints the fix.Run Mefi's Studio AI+.cmd starts the portable build when one exists in dist/, otherwise the source install.Mefi Studio AI+.exe. Its tasks, ideas, plans and conversations stay in its own resources\app\data folder. Settings, saved keys, the project list, the Discord link and resume state live in %APPDATA%\Mefi's Studio AI+, shared with a source install on the same Windows account, so only one of the two runs at a time: opening the other brings the running one forward.npm run start:web serves a browser-only preview on http://localhost:4173; it cannot launch workers.Choose a project on the launch screen, then Open studio (agents stay off) or Open and start agents. Nothing runs before you choose. If a crash or a restart interrupted work in the last ten minutes, Studio skips the question, reopens that folder and restarts the agents that were running; closing the studio yourself always brings the question back.
Follow the walkthrough. Start here opens on the first launch with seven short stops: scan, workspace, first map, connections, create, monitor, review. Each stop's Walk with me opens the real menu and highlights the control. It remembers your place.
At Scan or First map, choose an existing Codex, Claude Code, Grok or Antigravity login, or Install and sign in. Check connection, then Use for the whole studio routes mapping, chat, planning, agents and coding through that account. Have an API key (z.ai, OpenCode Go or Zen, OpenRouter, a custom endpoint) or a local server (LM Studio, Ollama) instead? I have an API key or a local model server takes you to Connections and scans again when you return. OpenCode is optional. See guided CLI setup for installation and account limits.
Check the connection. A fresh install runs auto setup by itself on the first launch, from the keys, CLIs and local servers already on the machine, and Settings › Connections says what it chose. Press Run auto setup again after adding a key or CLI, or configure a provider there. No key yet? The catalog, manual planning and saved work all work without one.
Give one clear task and watch it move from Ready to Working to Review.
GETTING_STARTED.md covers the same path in detail, including what every task state means and what to do next.
Vibe puts conversation, task creation, work in progress and decisions on one screen. Its Needs you drawer handles questions, build approvals and blocked tasks. Open other tools from its dock and return to Vibe from the top of the rail. Switch to Build for the full workspace described below; Studio remembers which mode you use.
The menu down the left edge opens Home, Work, Agents and Friends, with section-local Back/Forward navigation for pages. Friends opens the companion's existing Friends menu; its Rooms, Your PCs and Playground links go straight to the matching card. Agents contains Overview, Setup, Live, Workflows, Models and Usage. It stays open by default in wide windows; Keep menu open saves your preference. Settings, Search (Ctrl K) and Help stay at its foot. Help contains Start here, Shortcuts (?) and Community. The project selector at the top switches projects, and Ctrl , opens Settings from anywhere.
H)The home screen. Studio at a glance shows the service state with a single Pause / Resume, running workers, what needs you, what is up next, the machine gauge and today's usage. Below it: the conversation with Chat and Create task, and Your work (Queue, Ideas, Review, Done). Expand Queue settings to change Auto build or Agent mode.
D)
Every session, task and agent is a node. Agents orbit the assistant, fly to the task they work on, and say what they are doing in speech bubbles. The panel on the right holds Work, Assistant, Runs (recent builds grouped by task) and Ask, where agents wait for your decision with a recommended option. Agents in the top toolbar opens queue settings and links to full team setup.
4 or Ctrl ,)
Settings keeps General, Appearance, Audio and System. Connections, model routing, team roles and workflow behavior now live in Agents › Setup. Find a setting searches individual controls and opens the matching category and disclosure. Connection forms and advanced options expand in place. Appearance includes Focus, Studio and Atmosphere presets and the live canvas preview. Agents and the companion share confirmed operational controls.
The main menu groups the app into Home, Work, Agents and Friends. See Unified Studio for team presets, configuration scope, scrollbar-free navigation and the adaptive companion. The 0.4.5 scope records what is included in the next release and what is deferred. A local navigation row exposes each group's tools, while Settings, Search and Help stay available. See the interface inventory for the full set of screens and interior menus.
Tasks (T) with briefs, prerequisites, attempts and evidence · Plans (P) that turn an unclear idea into a specification and tasks · Ideas (I) inbox · Model catalog (1) and Performance (2), plus Usage and Context · Activity & evidence (3), a read-only view of the coding sessions · Sessions (E), Analyzer (A), Overhead (O), Appearance (U), and the Performance profiler · Search Studio (Ctrl K) finds any page, tool, task, setting or model · ? lists every shortcut.
The full feature walkthrough, in Studio's own vocabulary with a glossary, is in docs/architecture.md.
$env:MEFI_STUDIO_KEY = "<key>"; npx electron . --set-key, then Remove-Item Env:MEFI_STUDIO_KEY (while it is set it overrides the saved key). .env.example pairs every --set-*-key flag with its variable.data/curated.json and data/models.json. Tasks, conversations, settings, databases and captures stay local and are never packaged.The Void Engine Discord is where people share projects, ask for feedback and hang out while they build. Unfinished ideas are welcome. Come meet Studio, our new Discord bot, and help shape what it becomes.
Rooms (Friends › Rooms, on the Void Engine room service) lists your rooms and the listed ones you can join. You can Ask to join with a short note, or accept or decline an invite. For rooms you own, you can let requesters in or decline them, invite people by name, lock or close the room, and make new rooms (hangout or cowork, open to requests or invite-only, listed or not). Each room has its chat, shown as plain text with @names; links are never clickable. A message that does not go through stays in the box with the reason. Invites and requests waiting for you are counted on the Friends bubble. Rooms need the room service's address in the build and a linked Discord account; until then the panel says what is missing.
Every theme and node style is free in 0.4.4, including the Void collection. Discord membership is optional.
Shared watch-and-listen rooms in the desktop app are still rolling out and need a configured rooms hub and Discord connection. The personal media player is available now. In-app cowork rooms and an optional “Hey Studio” voice popup are future ideas, not features included in 0.4.4.
The community guide explains what's available. Public site and voice direction records the website's location, public naming and proposed voice integration.
GitHub is the meeting point. Each PC keeps its own clone, and the open project's default branch on GitHub is the one shared state.
main. Opening it only looks. Sync this PC pulls what your other PCs pushed and pushes this PC's commits on the default branch, but only after the project's own npm run check passes. It never overwrites uncommitted work, merges diverged histories or force-pushes.npm run sync does the same from a terminal (--rebase to put your commits on top, --no-check to skip the check).npm run sync refuses to push it and names the merge and the files; the session hook and Your PCs list recent ones. A deliberate choice is recorded with a Lost-work-ok: <why> line in the merge's commit message (or --allow-lost-work for one push). The generated booklet and TESTRUNS rows are exempt.node scripts/sync.mjs --hook at the start of each new session (.claude/settings.json). The hook fetches, fast-forwards main when it can, and hands the report to Claude. AGENTS.md has the working rules.Claude Code sessions and local branches stay on the PC that made them. Anything another PC needs belongs on GitHub.
Share between my PCs (inside Your PCs) moves what you choose between your own PCs through one private GitHub repository, <you>/mefi-studio-vault. Every file in it is sealed (AES-256-GCM) with a key that only your paired PCs hold in Windows' protected storage, so GitHub cannot read it. Make the vault on your first PC, then type its pairing code on each other PC. Nothing goes until you tick it, and Studio checks every item on the way out and again on the way in.
Share with friends saves one item (a brain, a recipe, a team setup, model results, a memory note or your preferences) to a .mefishare file you send however you like. Studio removes paths, user and PC names, emails, addresses and the repository name, refuses anything with a secret in it, and shows you exactly what the file holds first. Opening a friend's file runs the same review; a risky one is kept out, and a clean one goes to your library for you to use.
npm run test:fast # Node suites without the Electron fixtures (about 20 s)
npm run check # targets, spec collisions, CSS merge + unused, syntax, TESTRUNS
npm run lint # eslint, check-only
npm test # the gate: Node suites + Electron fixtures + Python contracts
npm run audit # renderer/template contract audit
npm test needs Python 3 (python, py -3 or python3) and a real desktop: nine suites drive Electron windows and are timing-sensitive. CONTRIBUTING.md explains the gates and conventions; TESTRUNS.md is the maintainers' lab notebook of past runs and flake triage, not a guide.
| Read this | For |
|---|---|
| GETTING_STARTED.md | First launch, new-machine checklist, your first task, what each state means |
| docs/architecture.md | Glossary and the detailed feature walkthrough |
| docs/code-map.md | Which file does what, folder by folder, and where to look first |
| docs/agent-loop.md | How a chat message becomes a verified task, with file references |
| docs/performance.md | Measurements and how to reproduce them |
| docs/community.md | The Void Engine Discord link: the weekly card, the login, what is stored, unlinking and the fork switch |
| docs/remote.md | Reach your PCs from Discord: what a DM can and cannot do, the PIN, alerts, and the hub protocol |
| docs/ux-audit.md | The UX audit and its phased plan |
| docs/fleet-overhaul-plan.md | The fleet overhaul: seats, pods, missions and Refocus from OpenRig, Live › Fleet, and the phase plan |
| docs/pi-provider-storage.md | How pi's coding agent stores provider config, and the settings/auth split Studio adopted from it |
| CONTRIBUTING.md | Check gates, test-file rules, parallel-session etiquette |
| SECURITY.md · CHANGELOG.md | Reporting and what changed |
| docs/archive/ | Historical audits and handoffs, kept for the reasoning |
Studio can launch the author's LÖVE game from Settings › Integrations when a checkout is found (MEFI_STUDIO_GAME_ROOT, or a sibling 2d-Trippy-Hell or 2d Trippy Hell folder). A fresh clone works without it.
Issues and pull requests are welcome. Start with CONTRIBUTING.md; the pull-request template lists the three gates. Bug reports are most useful with the version, the install kind, the selected route and builder, and the task state you saw.
Settings › Discord Server Styler starts the separate Server Styler project and opens its local dashboard. Start Server Styler installs dependencies and builds the web app when needed, then runs the dashboard and bot. Stop ends a process started by Mefi. The status line reports when the bot is online or still needs setup.
Keep Server Styler in a sibling discord-server-styler/ checkout. Set
MEFI_STYLER_ROOT to its absolute path if it lives elsewhere. Studio can still
find the former Discord Bot/ directory under the optional game checkout.
The card stays out of Settings until Studio finds one of these.
Bot credentials stay in Server Styler's ignored .env, outside this repository.
Create that file from .env.example, set DASHBOARD_PASSWORD, then use the
dashboard's Discord sign-in and setup wizard to connect the bot to a server.
Rebuild the portable desktop app with npm run package after Studio source
changes.
MIT © 2026 MefiMaxi
116 followers · starred Sep 2026
JavaScript
68.5%
HTML
24.3%
Python
4.0%
CSS
3.2%