1
0
Fork 0
forked from harness/core
VanillaCore Agent Harness
  • TypeScript 97.2%
  • JavaScript 2.6%
  • Dockerfile 0.1%
Find a file
2026-11-03 18:06:15 +00:00
.agents/skills/web-search feat: skill metadata injection modes with late skill discovery 2026-10-27 15:28:45 +00:00
deploy/kubernetes Complete Hayate public runtime and deployment naming 2026-11-02 06:26:17 +01:00
development-evidence fix: reconcile authorized work after bounded assessor exhaustion 2026-11-01 07:44:31 +00:00
docs fix(gateway): support explicit custom Matrix update ownership 2026-11-03 12:31:05 +00:00
evidence fix: bound and persist retained task assessment retries 2026-10-29 22:01:09 +00:00
scripts Bound targeted runner process and thread fan-out 2026-10-31 11:26:58 +01:00
src fix: reconcile blocked child dependencies without execution admission 2026-11-03 18:05:19 +00:00
test fix: reconcile blocked child dependencies without execution admission 2026-11-03 18:05:19 +00:00
.dockerignore Initial public VanillaCore Agent Harness, Apache-2.0 2026-10-23 10:00:10 +02:00
.gitignore refactor: source bundled plugin adapters exclusively from plugins repository 2026-10-26 05:33:09 +00:00
.node-version Pin current dependencies and document runtime operations 2026-10-23 10:13:18 +02:00
compose.yaml feat: use Hayate package CLI and canonical local agent paths 2026-11-01 22:28:41 +00:00
Dockerfile Complete Hayate public runtime and deployment naming 2026-11-02 06:26:17 +01:00
LICENSE Initial public VanillaCore Agent Harness, Apache-2.0 2026-10-23 10:00:10 +02:00
operator-reset-compatibility-IMPLEMENTATION.md docs: hand off legacy operator reset compatibility evidence 2026-10-30 12:54:31 +00:00
package-lock.json feat: use Hayate package CLI and canonical local agent paths 2026-11-01 22:28:41 +00:00
package.json feat: use Hayate package CLI and canonical local agent paths 2026-11-01 22:28:41 +00:00
plugins.lock.json feat(dispatcher): show original context and stable task references 2026-11-03 12:16:09 +00:00
README.md docs: correct public installation and publication availability 2026-11-02 19:18:00 +00:00
tsconfig.json Initial public VanillaCore Agent Harness, Apache-2.0 2026-10-23 10:00:10 +02:00

Hayate Agent

Hayate Agent

A persistent AI agent for your terminal and messaging gateways. Use it to work on code interactively, or keep it running to handle conversations, scheduled tasks and longer-term goals.

Hayate Agent owns scheduling, queues and message delivery. PI is the current model and tool runtime; you do not need a separate PI installation to install Hayate Agent. Existing PI provider configuration can be reused.

Naming and compatibility

Hayate Agent uses npm package and executable hayate-agent, home ~/.hayate-agent, configuration hayate-agent.yaml and HAYATE_AGENT_* environment variables. Existing local agent state is read without moving it; see configuration. Internal repository/image names are exempt. “Harness” describes runtime architecture, not a second product name. The remaining audit is tracked in the naming inventory.

Branding does not replace configured agent keys, SOUL/VOICE identities or other agents' personas. Updated templates apply only to newly created files; existing files are never overwritten. Updating source or building does not activate a running installation: install the reviewed version and restart through your normal deployment process. Cross-repository overlays/plugins may retain their own display text until separately updated.

Repositories

These are the canonical repository addresses, not a migration of existing runtime remotes, plugin source pins or deployment configuration. The deployments address does not establish a directory layout or a mapping from older overlay/base repositories. Core and Plugins publish source on GitHub. Core's public deploy/kubernetes/ contains only a SOUL.md persona example, not Kubernetes manifests or a complete configuration bundle. Use the native or Compose instructions below; Kubernetes requires operator-owned manifests. Existing installations do not need their remotes or configuration changed.

Install and start

You need Git and Node.js with npm. Node 24.22.1 LTS is recommended; the native CLI requires at least Node 22.19.0. Linux, macOS and Windows through WSL2 are supported.

git clone https://github.com/hayate-agent/core.git "$HOME/hayate-agent"
cd "$HOME/hayate-agent"
npm ci
npm install --global --prefix "$HOME/.local" .
export PATH="$HOME/.local/bin:$PATH"

cd /path/to/your/project
hayate-agent

Keep the checkout: this local installation links to it. Add the PATH line to your shell profile to make the command available in future terminals. No sudo or initialization wizard is required. npm ci also builds the CLI.

In the terminal interface, use /login to connect a supported provider and /model to select a model. Custom providers use PI's models.json; see configuration. Existing PI settings in ~/.pi/agent are reused, so changes there can affect other PI-based applications.

Your first session: ask the agent to inspect your project, use /help to browse commands, and /sessions or /resume to return to an earlier conversation. Each interactive launch starts a fresh conversation scoped to the current workspace.

For Docker Compose, Kubernetes and background services, see installation. Native Windows outside WSL2 is not supported.

What you can do

Capability What it means in practice
Interactive coding A fullscreen terminal interface with streaming answers, tool activity and a fixed input area. Configure which tools the model may use.
Persistent conversations Keep history across restarts, name sessions, and explicitly resume work. Native PI session storage is the default.
Always-on work Run heartbeats, recurring loops, cron jobs and standing goals without keeping a terminal open.
Parallel conversations Separate conversations can run concurrently; each conversation processes its own queue in order.
Matrix gateway Talk to the same Hayate Agent through DMs or rooms, with allowlists, mention rules, threads and approval handling.
HTTP run API Submit runs programmatically and stream progress through a Hermes-compatible API. AgentOS integration is optional.
Identity and skills Use SOUL.md for identity, VOICE.md for tone, and discoverable skills for reusable procedures.
Trusted plugins Add commands, channels, tools, terminal panels and interactive dialogs through local ESM modules. Storage and manual compaction also have extension points.
Optional MCP Enable PI-backed MCP integration when needed; it is not a required service.

Approvals are off by default. You can enable manual approval for selected tools. Plugins are trusted process code, not sandboxed extensions.

Everyday commands

  • Sessions: /new, /title, /sessions, /resume, /compact.
  • While working: /stop, /queue, /steer, /busy.
  • Ongoing tasks: /goal, /heartbeat, /loop, /cron. See Cron reports for internal/user audiences and retained follow-through.
  • Configuration: /model, /reasoning, /personality, /skills.
  • Discoverability: /help, /status, /harness (bundled development guide).

Not every command is available on every channel. Use /help in your current interface rather than memorizing the full command list.

Run as a gateway

hayate-agent run

This starts the same Hayate Agent without the interactive TUI. Configure Matrix with MATRIX_HOMESERVER and either MATRIX_ACCESS_TOKEN or password-login settings. Set MATRIX_ALLOWED_USERS and the room/approval policy before connecting it to other people. A configured model provider is required to answer messages.

The HTTP API is enabled with API_SERVER_KEY; supply secrets through your runtime environment, not source control. Use a supervisor or container deployment for an always-on service. /restart drains work and exits with status 75; the supervisor is responsible for starting it again.

See configuration for settings and operations for durable delivery, retries, memory pressure and shutdown behavior.

Configuration and data

Hayate Agent state defaults to ~/.hayate-agent. Use HAYATE_AGENT_HOME for a separate agent home. A minimal optional hayate-agent.yaml looks like this:

agent: example-agent
timezone: Europe/Berlin
loop:
  busyMode: queue
  drainSeconds: 60

Model/provider credentials and PI settings live separately in ~/.pi/agent (or PI_CODING_AGENT_DIR). Persistent installations need to retain both locations. init creates missing starter files; doctor checks local configuration. Neither is required for normal interactive use.

The container runs as UID/GID 1000 and includes Chromium runtime libraries, Python virtual environments and native build tools. Agents can install their own CLI tools in writable persistent storage; no particular browser CLI is required. See browser tooling. For operator-owned Kubernetes deployments, pin immutable image digests and supply private configuration and secrets separately.

Current boundaries

  • Native Matrix E2EE uses the Rust SDK with an identity-bound persistent store; see configuration, limits and acceptance. This capability requires the matching published crypto-enabled plugin pin and runtime image; older releases, including v0.1.129, do not support encrypted conversations.
  • Slack and Telegram adapters are not included. The plugin channel interface supports additional transports, but does not implement them automatically.
  • A Web UI and automatic activation/rollback of agent-built runtime versions are not shipped features.
  • Matrix supports optional gateway progress and status reactions, with global defaults and per-gateway overrides. A generic secret-manager context is still under development.
  • Durable queues reduce lost work, but crash recovery is at least once, not exactly once. External tool effects may be repeated after a crash.

Documentation

Contribute

Use a user-owned checkout, make changes on a feature branch, and run:

npm ci
npm run typecheck
npm test
npm run build

Submit changes through a pull request. Keep deployment identities, internal endpoints and credentials out of the public repository.

License

Apache License 2.0. See LICENSE.