@keystrokehq/serpdog


License
Other
Install
npm install @keystrokehq/serpdog@0.1.6

Documentation

Keystroke

The fastest way to build internal agents and AI systems

Build in Keystroke, from Claude or ChatGPT over MCP, or with Cursor, Claude Code, Codex, and other coding agents. Everything is real TypeScript you own.

Get started · Documentation · Use cases


Keystroke gives teams one platform for building agents that do real work and turning them into reliable systems. It handles models, memory, workspaces, tools, workflows, triggers, integrations, deployment, and run history, so you can go from an idea to a production agent without assembling the infrastructure yourself.

Build from a conversation or work directly in code. Either way, every agent, workflow, action, and trigger is defined as plain TypeScript: inspectable, testable, git-versioned, and portable.

What you can build

  • AI agents with memory, persistent workspaces, web search, integrations, subagents, and tools.
  • AI systems that combine agents with deterministic workflows, event triggers, durable execution, and human approval.
  • Team-facing agents people can use through Keystroke, Slack, or an API.

Build your way

Build with Best for
Keystroke's built-in agent Building in the browser with no local setup
Claude, ChatGPT, or another MCP client Building from the assistant you already use
Cursor, Claude Code, Codex, or another coding agent Full repository context, git, tests, and complete control

All three work with the same Keystroke projects and deploy to the same platform. Start in one surface and continue in another.

Start with your coding agent

Paste this into Claude Code, Cursor, Codex, or another agentic IDE:

Read https://keystroke.ai/start.md then help me create my first automation.

Your agent installs the CLI, connects your account, scaffolds a project, and deploys the first version. Then describe what you want to build:

Each weekday morning, scan my Google Calendar, Gmail inbox, and Linear issues,
then send me a short briefing in Slack.
Build a data analyst agent that answers ad hoc business questions by querying
our warehouse. Connect it to Slack so the team can ask questions in #data.

Browse more prompts →

Or set it up yourself

Prerequisite: Node.js ^22.18.0 || >=24.0.0 (Node.js 23 is not supported).

npm install -g @keystrokehq/cli
keystroke auth login
keystroke init my-app --yes
cd my-app
keystroke projects list
keystroke projects link --project <project-slug>
keystroke deploy

keystroke deploy lints, typechecks, builds, and uploads your project. No separate build steps are required.

Everything is TypeScript

Agents, workflows, actions, and triggers live under src/ in your project. A typical project grows into this structure:

my-app/
├── src/
│   ├── actions/
│   ├── agents/
│   ├── triggers/
│   └── workflows/
├── AGENTS.md
├── keystroke.config.ts
├── package.json
└── tsconfig.json

Define an agent:

import { defineAgent } from "@keystrokehq/keystroke/agent";

export default defineAgent({
  slug: "researcher",
  name: "Researcher",
  description: "Researches a topic and returns a sourced brief.",
  systemPrompt: "Research the request, verify important claims, and cite sources.",
  model: "openai/gpt-5.6-luna",
});

Browse current model IDs →

Create a reusable action:

import { defineAction } from "@keystrokehq/keystroke/action";
import { z } from "zod";

export const greet = defineAction({
  slug: "greet",
  name: "Greet",
  description: "Return a friendly greeting for a name.",
  input: z.object({ name: z.string() }),
  output: z.object({ greeting: z.string() }),
  async run({ name }) {
    return { greeting: `Hello, ${name}!` };
  },
});

Compose actions and agents in a durable workflow:

import { defineWorkflow } from "@keystrokehq/keystroke/workflow";
import { z } from "zod";
import { greet } from "../actions/greet";

export default defineWorkflow({
  slug: "greeting",
  name: "Greeting",
  description: "Return a friendly greeting for a name.",
  input: z.object({ name: z.string() }),
  output: z.object({ greeting: z.string() }),
  async run(input) {
    return greet.run(input);
  },
});

Each action or agent call inside a workflow is a durable step. Successful steps are recorded and replayed instead of repeated when a run retries.

Everything needed to build and operate AI systems

Keystroke combines an open TypeScript framework with a managed platform your whole team can use.

Build powerful agents Turn them into reliable systems
300+ models or your own provider keys Typed workflows and durable execution
Built-in memory, web search, and workspaces Schedules, webhooks, polls, and app events
Actions, workflows, subagents, and MCP tools Human approval, tests, traces, and run history
1,000+ integrations, any API, or any MCP server Managed credentials and access controls
Web, Slack, and API access Shared projects, skills, and agents

The framework and platform share the same authoring model and HTTP contracts. Build and test locally, then deploy to Keystroke Cloud. Operators can also run the source-available standalone runtime themselves.

Core concepts

Primitive Use it when
Action You need one typed, reusable unit of work.
Agent The path is open-ended and the model should decide what to do.
Workflow The steps are known and should run durably and predictably.
Trigger Work should start from a schedule, webhook, poll, or app event.

Workflows can call agents when a deterministic process reaches a step that needs judgment. Agents can use actions and workflows as tools.

Explore the framework →

Integrations

Use Keystroke's catalog of 1,000+ integration definitions, connect any HTTP API including private APIs, or attach an MCP server. Credentials stay separate from code and can be scoped to an organization, project, or user.

Browse integrations →

Cloud or standalone

Keystroke Cloud provides the managed team workspace, hosted project runtimes, deployments, run history, and credential flows described above.

The source-available repository also includes a standalone runtime for teams that want to operate the runtime themselves. It uses the same TypeScript definitions, but it is an operator-managed runtime rather than a self-hosted copy of every Keystroke Cloud service. See the implementation notes in packages/build and packages/http.

CLI

The CLI is designed for humans and coding agents: predictable commands, plain output, and no interactive UI where a scriptable option works.

keystroke deploy
keystroke agents prompt researcher --message "Research durable execution"
keystroke workflows run research-brief --input '{"topic":"AI automation"}'
keystroke triggers list
keystroke credentials create exa --set apiKey=@env:EXA_API_KEY

CLI reference →

Source code and license

Keystroke's framework source is available for you to inspect, modify, and self-host. It is licensed under the Elastic License 2.0, which does not permit offering substantial Keystroke functionality to third parties as a hosted or managed service.

Keystroke Cloud contains separately licensed enterprise code.

Contributing

Issues, ideas, documentation fixes, and code contributions are welcome. Code contributors must sign the Sprint Labs Contributor License Agreement before a change can be accepted. See CONTRIBUTING.md.

Documentation

Copyright 2026 Sprint Labs, Inc.