Try Mirr's own model
Mirr runs on its own model. The agent and the model were designed together, with Korean as the default.
Mirr runs on its own model. Agent and model are designed together, with Korean as the default.
Every feature you expect from a coding agent is here. Screens, error messages, and every menu are comfortable in Korean.
Mirr runs on its own model. The agent and the model were designed together, with Korean as the default.
Connect the issue tracker, the database, and internal APIs as MCP servers, and use them right in the work you were already doing.
Turn on Yolo mode and it keeps working without asking. (Ctrl+Y, ⌘Y on Mac)
Describe a problem in Korean and it finds the cause and proposes a fix. Every screen, error message, and setting is available in Korean.
No need to memorize every slash command. Run the one you want with its initial consonants.
Switch to the theme you want and make the terminal your own.
From connecting servers to managing skills, explore what the slash commands can do.
Long conversations can be tidied up with /compact. Context stays and only tokens shrink, so the work carries on.
· Auth session bug — fixed & tested
· Billing module — surveyed, proposal ready
· Next — 3-step refactor plan awaiting sign-off
❯ /compact
✓ Context compacted — 187k → 24k tok
Rewritten into a 3-line summary — the session carries on.
You can see every installed skill with /skills. Video editing, browser testing, and design review, all in one view.
❯ /skills
12 skills installed
gstackDesign, QA & deploy workflows
gsdStep-by-step plan & execute
ponytailReview & fix with less code
remotionProgrammatic video
datavizChart & dashboard style
claude-apiAPI reference & patterns
frontend-designFrontend visual design
webapp-testingBrowser app testing
agent-browserBrowser automation
premierePremiere Pro editing
find-skillsDiscover & install skills
simplifySimplification review
More available in the marketplace
Nothing runs before you confirm what changed. The work continues after your approval.
❯ /diff-fold
diff expanded · showing all lines (/diff-fold to fold)
app/auth/session.ts
@@ -12,9 +12,14 @@ import { verifyIdToken } from "./jwt";
const SESSION_TTL_MS = 60 * 60 * 1000;
const REFRESH_SKEW_MS = 0;
// allow 60s of clock skew — treat near-expiry as refreshable
const REFRESH_SKEW_MS = 60e3;
@@ -48,7 +53,7 @@ function shouldRefresh(exp: number) {
// the session cookie renews itself near expiry
if (exp < Date.now()) {
if (exp < Date.now() + REFRESH_SKEW_MS) {
app/auth/session.test.ts
@@ -30,6 +35,26 @@ describe("shouldRefresh", () => {
it("refreshes after expiry", () => {
expect(shouldRefresh(Date.now() - 1)).toBe(true);
});
it("refreshes 60s before expiry", () => {
expect(shouldRefresh(Date.now() + 30e3)).toBe(true);
});
it("never re-logs-in under clock skew", () => {
travel(61e3);
expect(session()).toBe("alive");
});
@@ -61,6 +86,8 @@
it("refreshes once under contention", async () => {
// two tabs expiring together still refresh exactly once
const calls = await concurrentRefresh(2);
expect(calls).toBe(1);
});
Why: refresh 60s before expiry to cut re-logins.
❯ Apply this change? y
✓ vitest auth/session — 24/24 passing (1.8s)
✓ 8f3c21e fix(auth): refresh sessions 60s early
Connect the issue tracker, the database, and internal APIs as MCP servers. Connected tools are ready to use in the task at hand.
A server definition is all it takes. Connection status and tool lists are in /mcp.
❯ /mcp add github-mcp
✓ github-mcp — connected · 12 tools (issues · pull_requests)
❯ /mcp add linear
✓ linear — connected · issues & projects · 15 tools
❯ /mcp add notion
✓ notion — connected · search & docs · 11 tools
❯ /mcp add premiere
✓ premiere — connected · sequence editing · 280 tools
4 MCP servers · 318 tools — usable right inside the session
Copy, paste, run. In a few minutes your terminal turns into a workspace.
Get started