Skip to main content
An agent is defined entirely by its deployment configuration: the model, system prompt, tools, skills, connectors, and runtime features that shape how it behaves for a customer. You declare the configuration once when creating the deployment and evolve it over time with updates — no redeploy required.

Agent configuration fields

FieldDescription
customer_idRequired. Your identifier for the customer this agent serves. One agent per customer is the recommended model
nameRequired. A human-readable name for the deployment
system_promptRequired. Defines the agent’s behavior and persona. Distinct from user messages, which describe the work to be done. Keep fast-changing product knowledge in skills and live data behind MCP tools instead
modelThe model that powers the agent, in provider/model form, such as anthropic/claude-sonnet-4.5. No provider lock-in — memory, skills, and files live outside the model, so you can switch it anytime without losing what the agent has learned
runtimeThe agent harness. Currently hermes (default)
sandboxThe isolated container the agent runs in — see Sandbox
mcp_serversMCP servers exposing your first-party tools — see MCP
skillsMarkdown playbooks that supply domain expertise — see Skills
secretsConnector credentials as secret references — see Secrets
featuresRuntime capability toggles: memory, dreaming, automations, steering, filesystem webhooks — see Features

Create an agent

The following example defines a media generation agent with one MCP server and one skill. See Deployments for the full parameter reference.
import Herm from "herm";

const herm = new Herm(); // reads PRISM_API_KEY

const deployment = await herm.deployments.create({
  customer_id: "cus_123",
  name: "Acme Creative Agent",
  model: "anthropic/claude-sonnet-4.5",
  system_prompt:
    "You are Acme's media generation agent. Help the user plan, create, and iterate on high-performing short-form videos.",
  mcp_servers: [
    {
      name: "prism-media",
      url: "https://api.prismvideos.com/mcp",
      tools: ["search_models", "generate_image", "generate_video"],
    },
  ],
  skills: [
    {
      name: "storyboarding",
      source: "inline",
      content:
        "---\nname: storyboarding\ndescription: Create shot-by-shot storyboards for short-form videos\n---\n# Storyboarding\n...",
    },
  ],
});
The response echoes your configuration and adds deployment_id, status, the default thread_id, the filesystem layout, and the SSE events URL:
{
  "deployment_id": "dep_7xK9s2",
  "customer_id": "cus_123",
  "runtime": "hermes",
  "status": "ready",
  "model": "anthropic/claude-sonnet-4.5",
  "thread_id": "thr_default_8a1",
  "filesystem": {
    "workspace_path": "/workspace",
    "persistent": true
  },
  "events": {
    "transport": "sse",
    "url": "https://api.prismagents.com/v1/deployments/dep_7xK9s2/events"
  }
}

Update an agent

Update a live deployment’s configuration with deployments.update. Changes apply to the agent’s next run — memory, files, and conversation history are untouched.
const updated = await herm.deployments.update("dep_7xK9s2", {
  name: "Acme Creative Agent v2",
  model: "anthropic/claude-opus-4-8",
  system_prompt:
    "You are Acme's media generation agent. Always propose three creative directions before generating.",
  // Arrays are fully replaced
  mcp_servers: [
    {
      name: "prism-media",
      url: "https://api.prismvideos.com/mcp",
      tools: ["search_models", "generate_image", "generate_video", "generate_audio"],
    },
  ],
  skills: [
    {
      name: "storyboarding",
      source: "url",
      url: "https://acme.com/skills/storyboarding/SKILL.md",
    },
  ],
  // Maps are merged at the key level
  secrets: {
    META_ADS_TOKEN: "sec_acme_meta_ads_v2",
    RESEND_TOKEN: "sec_acme_resend",
  },
  features: {
    dreaming: true,
    filesystem_webhooks: true,
  },
});

Update semantics

  • Omitted fields are preserved. Only include the fields you want to change.
  • Scalar fields (name, model, system_prompt) are replaced with the new value.
  • Array fields (mcp_servers, skills) are fully replaced by the new array. Pass an empty array to clear one. To modify them incrementally instead, use the Skills and Tools APIs.
  • secrets is merged at the key level. Keys you provide are added or updated; keys you omit are preserved. Set a key to null to remove it.
  • features is merged at the key level, so you can toggle one flag without restating the rest.
  • No-op detection. If the update produces no change, the existing deployment is returned unchanged.
  • customer_id and runtime are immutable — create a new deployment instead.

Sandbox

Each deployment runs in its own container with a persistent filesystem:
FieldDefaultDescription
enabledtrueRun the agent in an isolated container
typedockerSandbox backend
persistent_filesystemtrueKeep /workspace across sessions, restarts, and deploys
The sandbox is the security boundary: the agent gets a full shell, filesystem, and network inside the container, and nothing outside it. Customer credentials stay out of the sandbox entirely — see Secrets.

Features

FeatureDefaultDescription
memorytrueObservational memory that persists across sessions
dreamingfalseIdle-time self-learning between sessions
automationstrueScheduled and recurring runs the customer can create in chat
steeringtrueHuman-in-the-loop approvals before consequential actions
filesystem_webhooksfalsefilesystem events on the SSE stream when workspace files change

Secrets

Connector credentials are passed as references, never raw values:
await herm.deployments.update("dep_7xK9s2", {
  secrets: {
    META_ADS_TOKEN: "sec_acme_meta_ads",
  },
});
The key is the environment variable name the integration expects; the value is a secret reference (sec_...) provisioned by the Prism team. Raw credentials never appear in prompts, logs, or the agent’s filesystem. Ask your Prism contact to register secrets for your workspace — book a call if you don’t have one yet.

Per-customer deployments

Create one deployment per customer (customer_id). Each gets its own container, filesystem, memory, and automations, so no customer’s context can leak into another’s. Use List Deployments with the customer_id filter to manage your fleet.

Next steps

Tools

Built-in capabilities and how to add your own.

MCP

Register your product’s tools via MCP servers.

Skills

Teach the agent your domain playbooks.

Quickstart

Deploy and message your first agent.