Errand AI Agent

by runta-dev• 139•• Scanned•Claim this listing•Request removal
Cloud Infrastructureai agentsai assistantautonomous agentscloud agentscomputer use

An open-source take on Grok Bot/Muse. Persistent AI teammates with their own cloud computers, powered by Runta.

Errand is an open-source ai agent by runta-dev, written mainly in TypeScript, with 139 GitHub stars and the Apache-2.0 license. Its code was last updated Sep 22, 2026.

<div align="center"> <img src="./build/icon.png" width="96" height="96" alt="Errand" />

Errand

Give your agents a computer. Then give them a job.

A desktop home for persistent AI teammates, powered by Runta.

macOS 13+ Apple Silicon Electron TypeScript Powered by Runta

Quick start · Releases · How it works · Discord

<img src="./docs/screenshots/errand.gif" width="960" alt="Errand demo: chat with cloud agents and view their computers" />

<sub>Your agents have a workspace to come back to. So do you.</sub>

</div>

Meet your new teammates

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.

<table> <tr> <td width="50%" valign="top">

🖥️ A computer for every agent

Each agent runs in its own Runta Runtime, with a cloud workspace for its files, tools, and ongoing work.

</td> <td width="50%" valign="top">

💬 Keep the conversation going

Return to previous conversations and completed runs. Send a follow-up without rebuilding the context from scratch.

</td> </tr> <tr> <td width="50%" valign="top">

👀 See the work happen

Follow tool activity and available output. Open the live desktop when you need to see what the agent sees.

</td> <td width="50%" valign="top">

🖼️ Show what you mean

Attach an image to your message and send it as native image input to the agent. Attachments stay with the conversation.

</td> </tr> <tr> <td width="50%" valign="top">

☁️ Pick up where you left off

Execution lives in the cloud. Reopen Errand to reconnect with your agents and retrieve their latest work.

</td> <td width="50%" valign="top">

🔐 Keep credentials protected

Browser-based authorization and OS-backed credential encryption, with a narrow bridge between the UI and native code.

</td> </tr> </table>

Quick start

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
  1. Sign in through your browser using your Runta account.
  2. Create an agent and give it a focused job.
  3. Follow the work in the conversation, tool activity, or live desktop.

Running the desktop app locally connects to Runta Cloud Agents. You need a Runta account and model access configured for your agents.

<details> <summary><strong>Connection settings</strong></summary>

The app defaults to:

ServiceAddress
Cloud Agents APIhttps://api.runta.com
Runta Dashboardhttps://dashboard.runta.com

Development builds can override these addresses in Connection settings. The E2E script accepts an ERRAND_E2E_ENDPOINT override.

</details>

How it works

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.

Build with us

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
<details> <summary><strong>Authenticated end-to-end checks</strong></summary>
ERRAND_E2E_TOKEN=... npm run test:e2e

Use a test account and keep tokens out of commits and logs.

</details> <details> <summary><strong>Local macOS packaging</strong></summary>
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.

</details> <details> <summary><strong>Release signing and notarization</strong></summary>

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:

KindNameValue
SecretAPPLE_CERTIFICATE_BASE64Base64 of a Developer ID Application .p12 export containing its private key.
SecretAPPLE_CERTIFICATE_PASSWORDPassword protecting that .p12 export.
SecretAPPLE_NOTARY_KEY_BASE64Base64 of an App Store Connect team API key .p8 file.
VariableAPPLE_NOTARY_KEY_IDThe API key's Key ID.
VariableAPPLE_NOTARY_ISSUER_IDThe 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:

  1. Open Actions → Publish macOS Release, select 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.
  2. After verification succeeds, run Publish verified CI artifact with that successful run's ID as 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.

</details> <details> <summary><strong>Upgrading from Runta Crew</strong></summary>

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_* variables.

Default connections now use https://api.runta.com and https://dashboard.runta.com. The repository and release downloads are available at runta-dev/errand.

</details>

License

Copyright 2026 Runta.

Errand is licensed under the Apache License, Version 2.0. Third-party components retain their respective licenses and notices.

Credits

The Errand SVG icon uses the same beam variant of boring-avatars as the agents in the app. The Dock icon uses the selected Atlas seed with the app's original palette, configured in src/shared/avatarStyle.json; the generated avatar artwork is unchanged apart from the macOS icon mask and padding. npm run build:icons generates the SVG, PNG, and macOS ICNS files; development and release builds run it automatically. The app, Dock, and installer use the same artwork. The library's MIT notice is included in the packaged app.

The project is built with Electron, React, TypeScript, and noVNC, on Runta Cloud Agents.


<div align="center">

If Errand earns a place in your Dock, give it a star. ⭐

Built by Runta · Join the conversation

</div>

Errand alternatives

View more →

Similar ai agents in Cloud Infrastructure, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.

NameStarsLicenceLast updatedScan
Errand (this page)
runta-dev
139Apache-2.0Sep 22, 2026Scanned, no flagged issues
OmniRoute
cheaper-inference
83kMITNov 1, 2026Scanned, see report
Generative AI
GoogleCloudPlatform
18kApache-2.0Oct 30, 2026Scanned, no flagged issues
Dsh Routing Suite
yjh051108
7kMITSep 18, 2026Scanned, no flagged issues
Intentkit
crestalnetwork
6.5kMITSep 16, 2026Scanned, no flagged issues
Open Agents
vercel-labs
5.9kMITAug 29, 2026Scanned, no flagged issues