@Miko A retried webhook creates a second task. Reproduce it, make processing idempotent, and add a test.
👀 1Self-hosted AI coding agent for Slack, Linear and GitHub
Bring Claude Code, Codex, or Cursor to Linear, GitHub, GitLab, and Slack. Assign an issue to Miko or just @Miko. Get progress, answers, and pull requests back in your workflow.
engineering
Interactive preview · messages stay in this demo
product
Interactive preview · messages stay in this demo
docs
Interactive preview · messages stay in this demo
Integrations
Assign an issue to Miko in Linear. Or @Miko in Slack, a GitHub PR, or a GitLab MR. Your chosen coding agent works in an isolated workspace and brings progress and results back to the conversation.

Slack
@Miko in a thread
Linear
Assign to Miko
GitHub
@Miko in a PR
GitLab
@Miko in an MR
Zulip
@Miko in a topicSupported agents
Claude Code, Codex, Cursor, and Grok run the coding work. Gemini and OpenCode are supported too.

Claude Code

Codex

Cursor

Grok

Gemini

OpenCode
- Assign an issue or @Miko
- Miko + your coding agent
- Progress, answers & pull requests
Put Miko to work on your code
Hand off an issue, @mention Miko, or put the work on a schedule. Your coding agent investigates, implements, and checks it in its own workspace, then brings the result back for review.
Give Miko a task where you work
Assign a Linear issue or @mention Miko in a connected conversation. It picks up the task and repository context so your coding agent can get started.
# engineering@Miko Fix duplicate webhooks.
MikoPicking up your taskWorkingKeep each task in its own workspace
Miko creates a separate Git worktree for each task. A bug fix, a feature, and a documentation update can move forward without mixing their changes.
Change the brief with a reply
Forgot an edge case? Add it to the conversation. Miko picks up your follow-up and continues the same task with its existing context.
Also test empty payloads.
MikoOn it. Adding that case to the webhook fix.
Get a pull request back
Miko writes the code, runs the configured checks, and opens a pull request with a summary. You review the changes and decide what ships.
Ready for your reviewPut work on a schedule
Choose when it runs: a single time, every day, weekly, or a cron schedule. At that time Miko does the task and brings the result back for review.
Again tomorrow at 09:00
Read it on your board
Select the task on the local board. Its tool calls, checks, and final result stay there for you to read.
Workflows
Turn a report into a fix. Investigates the repository, implements the change, runs checks, and returns a pull request for review.
Extract shared event validation
Extract repeated event validation into a helper. Keep behavior unchanged.
Acceptance criteria
Keep the public interfaces unchanged too.
Extract shared event validation#851Activity
The helper is extracted. Existing tests pass and interfaces are unchanged.
Pull request ready for reviewShow 2 earlier activities
Handle null states from the PR review
Handle the reviewer’s null-state feedback in this PR.
Acceptance criteria
Can you cover it with a regression test?
Handle null states from the PR review#852Activity
The test passes. Follow-up changes are ready on this branch.
Pull request ready for reviewShow 2 earlier activities
Validate incoming API requests
Take the API validation issue while the dashboard task runs.
Acceptance criteria
Keep the dashboard branch untouched.
Validate incoming API requests#853Activity
The API change is ready in its own branch for review.
Pull request ready for reviewShow 2 earlier activities
Cover invalid configuration reloads
Add tests for missing values and invalid settings during config reload.
Acceptance criteria
Make sure the last valid configuration stays active.
Cover invalid configuration reloads#854Activity
Both cases are covered. The affected test suite passes.
Pull request ready for reviewShow 2 earlier activities
Add a persistent task status filter
Add a status filter to the task list. Preserve the selection after a reload.
Acceptance criteria
Please include the empty state.
Add a persistent task status filter#855Activity
Added the empty state and checked the affected components. Ready for review.
Pull request ready for reviewShow 2 earlier activities
Explain repository routing
How does an incoming issue choose a repository?
Acceptance criteria
Include references to the implementation.
Activity
The explanation is ready with code references. No files changed.
Show 2 earlier activities
Fix duplicate tasks on webhook retries
A retried webhook creates a second task. Reproduce it, make processing idempotent, and add a test.
Acceptance criteria
Also cover an empty payload.
Fix duplicate tasks on webhook retries#857Activity
The fix and tests are ready. Review the branch before merging.
Pull request ready for reviewShow 2 earlier activities
Update the setup guide
Update the setup guide to match the source installer.
Acceptance criteria
Include how to open the status board.
Update the setup guide#858Activity
The guide now covers installation, launch, and the local /board.
Pull request ready for reviewShow 2 earlier activities
Fix duplicate tasks on webhook retries
Turn a report into a fix. Investigates the repository, implements the change, runs checks, and returns a pull request for review.
Add a persistent task status filter
Keep small features moving. Give Miko acceptance criteria and let it work through implementation, checks, and a pull request.
Handle null states from the PR review
Continue in the review thread. Mention your configured agent in a GitHub PR or GitLab MR to request the next change.
Cover invalid configuration reloads
Cover the overlooked cases. Ask for tests around a concrete behavior using your project’s existing patterns.
Explain repository routing
Get answers grounded in code. Investigate how a system works before deciding what to change.
Extract shared event validation
Make room for the next change. Delegate bounded cleanup and review the diff and checks before merging.
Update the setup guide
Keep the docs close to reality. Trace the implementation and update setup steps and configuration examples.
Validate incoming API requests
Move independent work forward. Tasks get separate Git worktrees and can be routed to different repositories.
From issue to work you can review




Miko Board in action. Tasks, logs, and scheduled automations shown are demo data.
Self-hosted & BYOK
Miko is a self-hosted coding agent. You run the worker on your machine or server, and model usage stays on your account.
Your agent
Chooseyour runner
Use the coding agent that fits your work.
Includes:
- Claude Code, Codex, Cursor, Grok
- Gemini and OpenCode
- Repository-level configuration
- Provider-specific model selection
- Your existing coding workflow
Your credentials
BYOKyour account
Model usage stays with your provider.
Includes:
- Supported API keys or subscriptions
- Your provider’s usage limits
- No bundled token allowance
- Your account and billing
- Provider authentication required
Your infrastructure
Localyour machine
Run the worker on your own machine or server.
Includes:
- Apache 2.0 source
- Isolated Git worktrees
- Repository routing
- Local status board and history
- Searchable task logs
FAQs
A self-hosted background coding agent that connects your tools to coding agents and returns work for you to review.
Claude Code, Codex, Cursor, Grok, Gemini, and OpenCode. Configure your runner and model with supported provider credentials.
Add the setup skills with npx skills add mikoagents/miko -g, then run /miko-setup in your coding agent. It guides installation and connections.
Assign a Linear issue to Miko, or @Miko in a GitHub PR, GitLab MR, or Slack conversation. Connect each integration during setup; use the bot handle you configured.
Bring your own supported API credentials or subscription authentication. Provider usage and hosting costs are yours. The source is Apache 2.0.
Tasks run in separate Git worktrees. Repository routing sends work to the configured repository, keeping working directories apart.
On your machine or server. The selected coding provider processes requests under your configured account. Follow tasks and searchable logs on the local status board.
Get Miko running.
One prompt for your agent. Then your first task, and the logs on the board.
Paste this to your agent
Copy it into Claude Code, Codex, Cursor, or your coding agent. It tells the agent what to do first, then what to do next.
Set up Miko for me. Do these in order. First, install the setup skills by running this in the terminal: npx skills add mikoagents/miko -g Then run /miko-setup in this chat. Guide me through the rest: check prerequisites, install Miko from source, connect my coding credentials, add my repositories, and help me launch it. I will sign in and approve access when you ask.Give Miko its first task
Assign a Linear issue, or @Miko in a configured GitHub PR, GitLab MR, or Slack conversation.
Keep the worker and any tunnel running so new tasks can reach Miko.
Read the logs on the board
Open this address on the machine running Miko. Select the task and follow its live log.
http://127.0.0.1:3456/board
Installing the skills adds the setup workflow. Running /miko-setup installs the runtime. You sign in and approve access to your accounts during setup.