by runta-dev
An open-source take on Grok Bot/Muse. Persistent AI teammates with their own cloud computers, powered by Runta.
# Add to your Claude Code skills
git clone https://github.com/runta-dev/errandLast scanned: 9/19/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@vitest/coverage-v8: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@vitest/mocker: Vitest: Path Traversal / Arbitrary File Read via @vitest/mocker Redirect Mock",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "js-yaml: js-yaml: maxTotalMergeKeys does not limit CPU use for empty merge sources",
"severity": "high"
},
{
"type": "npm-audit",
"message": "vitest: Vulnerability found",
"severity": "medium"
}
],
"status": "WARNING",
"scannedAt": "2026-09-19T08:32:55.360Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how errand compares with popular alternatives.
errand is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by runta-dev. An open-source take on Grok Bot/Muse. Persistent AI teammates with their own cloud computers, powered by Runta. It has 101 GitHub stars.
errand returned warnings in SkillsLLM's automated security scan. It has no critical vulnerabilities, but review the flagged issues in the Security Report section before adding it to your workflow.
Clone the repository with "git clone https://github.com/runta-dev/errand" and add it to your Claude Code skills directory (see the Installation section above).
errand is primarily written in TypeScript. It is open-source under runta-dev on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh errand against similar tools.
No comments yet. Be the first to share your thoughts!
Requires a passing catalog security scan. Resolve the flagged issues and resubmit to enable featuring.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
A desktop home for persistent AI teammates, powered by Runta.
Quick start · Releases · How it works · Discord
Your agents have a workspace to come back to. So do you.
Create an agent, give it a task, and follow its work from your Mac. Each agent has its own cloud computer, files, and conversation history. Close the app and return to the same workspace later.
Errand brings persistent agents into a familiar desktop experience: a team in the sidebar, a conversation for each agent, and a live view of the computer doing the work.
Each agent runs in its own Runta Runtime, with a cloud workspace for its files, tools, and ongoing work.
Return to previous conversations and completed runs. Send a follow-up without rebuilding the context from scratch.
Follow tool activity and available output. Open the live desktop when you need to see what the agent sees.
Attach an image to your message and send it as native image input to the agent. Attachments stay with the conversation.
Execution lives in the cloud. Reopen Errand to reconnect with your agents and retrieve their latest work.
Browser-based authorization and OS-backed credential encryption, with a narrow bridge between the UI and native code.
macOS 13+ · Apple Silicon · Node.js 22–26 · npm 10+
git clone https://github.com/runta-dev/errand.git
cd errand
npm ci
npm run dev
Running the desktop app locally connects to Runta Cloud Agents. You need a Runta account and model access configured for your agents.
The app defaults to:
| Service | Address |
|---|---|
| Cloud Agents API | https://api.runta.com |
| Runta Dashboard | https://dashboard.runta.com |
Development builds can override these addresses in Connection settings. The E2E script accepts an ERRAND_E2E_ENDPOINT override.
Your Mac Runta Cloud
┌─────────────────────┐ ┌──────────────────────────┐
│ Errand │ │ Cloud Agents API │
│ │ │ │
│ Conversations │ ◀───────▶ │ Agents · Runs · Events │
│ Activity & results │ │ Artifacts · Sessions │
│ Live computer view │ └────────────┬─────────────┘
└─────────────────────┘ │
┌────────────▼─────────────┐
│ Each agent's runtime │
│ Files · Tools · Browser │
└──────────────────────────┘
The React renderer handles the interface. A typed preload bridge exposes specific desktop operations. Electron main owns authentication, encrypted credentials, and the allowlisted Cloud API broker. Runta provides the agent runtimes and their lifecycle.
The desktop client and Runta transport are separate layers. Connecting a different backend requires implementing the agent, run, event, artifact, and computer-session contracts.
Found a rough edge? Open an issue. Have an improvement? Send a pull request.
Useful contributions include clearer activity and error states, more accessible interactions, and reproducible reports of connection or attachment problems. Include the steps to reproduce, what you expected, and what happened.
npm run typecheck
npm run lint
npm test
npm run build
ERRAND_E2E_TOKEN=... npm run test:e2e
Use a test account and keep tokens out of commits and logs.
npm run package
npm run smoke
Artifacts are written to release/. Local packaging creates ad-hoc signed builds for testing. Use the signed release workflow for distribution.
The DMG uses native ULMO (LZMA level 9) compression. Packaging verifies its contents and refreshes its blockmap and update metadata. Errand requires macOS 13 or later. ZIP artifacts are unchanged by the DMG compression step.
The release workflow runs npm run package:release. Public releases require a real Developer ID Application certificate, successful Apple notarization, and stapled app and DMG tickets. ULMO level 9 compression happens before final DMG signing; release hashes, blockmaps, and update metadata must describe the final artifacts.
Configure these values in runta-dev/errand → Settings → Secrets and variables → Actions, using New repository secret and New repository variable:
| Kind | Name | Value |
|---|---|---|
| Secret | APPLE_CERTIFICATE_BASE64 |
Base64 of a Developer ID Application .p12 export containing its private key. |
| Secret | APPLE_CERTIFICATE_PASSWORD |
Password protecting that .p12 export. |
| Secret | APPLE_NOTARY_KEY_BASE64 |
Base64 of an App Store Connect team API key .p8 file. |
| Variable | APPLE_NOTARY_KEY_ID |
The API key's Key ID. |
| Variable | APPLE_NOTARY_ISSUER_ID |
The team's Issuer ID. |
These names follow the Runta CLI release workflow. Store all five values at repository scope in errand; the workflow reads them through its existing secrets and vars contexts. Its apple-release environment remains the release job's environment, with no duplicate values required there.
On macOS, copy each encoded file directly to the clipboard, then paste it into the matching GitHub secret before running the next command:
# Paste into APPLE_CERTIFICATE_BASE64.
base64 < "/path/to/DeveloperIDApplication.p12" | tr -d '\n' | pbcopy
# Paste into APPLE_NOTARY_KEY_BASE64.
base64 < "/path/to/AuthKey.p8" | tr -d '\n' | pbcopy
Enter the certificate password directly in GitHub's secret form. Keep private keys and passwords out of commits, logs, terminal arguments, and chat.
For a formal release:
main, set dry_run=true, enter a tag matching package.json's version (with an optional v prefix), and leave ref empty. This signs, notarizes, staples, and verifies the build, then saves DMG, ZIP, blockmaps, and latest-mac.yml as errand-macos-arm64-<version> without publishing a GitHub Release.source_run_id and Markdown release notes as notes. It verifies and publishes the same signed artifacts without rebuilding them.For feature-branch validation, run CI on that branch with signed_release=true and release_tag matching package.json. Formal artifact promotion requires a successful run of publish-release.yml; feature CI runs are validation-only.
Publishing a GitHub Release directly triggers a new build; a manual Publish macOS Release run with dry_run=false builds the release tag and uploads to an existing release. Use the promotion flow above to publish already verified artifacts.
Errand uses its own Errand Safe Storage macOS keychain entry and ~/Library/Application Support/Errand profile. After upgrading from Runta Crew, sign in to Errand through the configured Runta Dashboard. Legacy Runta Crew credentials, settings, and browser data remain untouched and are not migrated or decrypted. The com.runta.crew application identity stays unchanged for signed updates. Existing runta-crew://agent/... links, backend client identifiers, and RUNTA_CREW_* development environment variables remain supported alongside the new errand:// links and ERRAND_*