PromptisePromptise
Docs
GitHub
promptise
[n.03/07]> Agent Runtime

AI agents that keep working when no one is watching.

An agent that only runs when someone calls it is not automation. The Agent Runtime turns it into a dependable service: it wakes on schedules and events, keeps its state, recovers from crashes, and stays inside the budgets and limits you set.

GitHub
cronwebhookeventagent processjournalcrashresume from step 3
Triggers wake the agent on a schedule, a webhook or an event. Each step is written to a journal, so after a crash the process restarts and resumes from the last good step.
[n.01/07]> what it is

Turn an agent into a service that runs on its own.

Without a runtime an agent only runs when you call it. It has no memory between runs, no schedule, no crash recovery and no limits. The Agent Runtime wraps a Promptise agent in a persistent process that runs on its own.

Without

A function you call

You call agent.ainvoke() by hand. It runs once and stops, with no state between calls, no triggers and no governance. If it crashes, it is gone.

With the runtime

A process that lives

The agent becomes a process: a persistent container with a lifecycle, a trigger queue, a state store, a conversation buffer and a governance engine. It runs until you stop it.

In the box

What it gives you

Cron, webhook and file-watch triggers, crash-recovery journals, budget enforcement, health monitoring, missions, secret scoping and a 37-endpoint REST API.

[n.02/07]> architecture

Five layers that make an agent operable.

Triggers wake a process. The process runs the agent. Governance bounds what it does, and management lets you steer it from outside.

[01]

Triggers

  • Cron
  • Webhook
  • File watch
  • Event bus
  • Inbox
[02]

Process

  • AgentProcess
  • Lifecycle
  • Context
[03]

Agent

  • Agent
  • Memory
  • MCP tools
[04]

Governance

  • Budget
  • Health
  • Mission
  • Journal
  • Secrets
[05]

Management

  • REST API
  • CLI
  • Dashboard
  • Escalation

Real work looks like an agent that wakes at six, checks your pipelines, finds an anomaly, compares it with yesterday’s deployment, writes a report, posts it and goes back to sleep, without anyone watching.

[n.03/07]> triggers

Work starts the moment something happens.

Triggers compose with OR logic: any one of them can wake the process, and events queue in arrival order. One process can carry as many as it needs.

// 001

Cron schedules

Every five minutes, every Monday at 9am, the first of the month. Standard cron syntax.

TriggerConfig(type="cron", cron_expression="0 9 * * MON")
// 002

Webhooks

GitHub pushes, payments, alerts. Optional HMAC signature verification.

TriggerConfig(type="webhook", webhook_path="/github")
// 003

File watchers

Glob patterns on a directory, filtered by event type. Process new data as it lands.

TriggerConfig(type="file_watch", watch_path="/data", watch_patterns=["*.csv"])
// 004

Event subscriptions

React to other agents in the same runtime, by topic with wildcard support.

TriggerConfig(type="event", event_type="pipeline.*")
// 005

Inter-agent messages

Decoupled coordination between processes through a topic.

TriggerConfig(type="message", topic="coordinator.tasks")
// 006

Custom triggers

Register your own trigger type and use it like any built-in one.

register_trigger_type(...)
[n.04/07]> persistence

Nothing is lost when a process crashes.

Every process keeps persistent state: key-value data with full mutation history, long-term memory, environment variables and file mounts. It is injected into every invocation.

A journal of everything

Two backends: an in-memory journal for tests, and a file journal for production (append-only JSONL with checkpoint files). State transitions, trigger events and invocation results are recorded.

Recovery from the last checkpoint

When the server restarts, the replay engine rebuilds each process from its last checkpoint and replays the events after it, so an agent resumes with its context and counters intact.

  • Checkpoints snapshot full process state
  • Secrets are never written to the journal
  • Restart policy per process: always, on_failure or never
state.pypython
# every process has an AgentContextctx = process.context # read and write state (timestamped, attributed)last_run = ctx.get("last_run_time")errors = ctx.get("error_count", 0)ctx.put("error_count", errors + 1) # long-term memoryhits = ctx.search_memory("previous database migrations")ctx.add_memory("v2 migration finished for orders") # full mutation history of a keyhistory = ctx.state_history("error_count")
[n.05/07]> governance

Autonomy your team can sign off on.

Budgets, health checks, missions and secrets keep an agent inside an envelope. Pick one to see how it is configured.

[01] Autonomy budget

An envelope the agent cannot exceed.

An autonomous agent can loop for hours, call expensive APIs all night or take irreversible actions while nobody watches. The budget defines what it may do freely, per run and per day, and what happens when it hits the limit.

What you get
  • Limits on tool calls, LLM turns, cost and irreversible actions per run
  • Daily limits on calls, runs and cost, with a configurable reset hour
  • Per-tool cost weights, so a payment counts for more than a search
  • On exceeding: pause, stop or escalate
budget.pypython
budget = BudgetConfig(    max_tool_calls_per_run=10,    max_cost_per_day=50.0,    tool_costs={        "search_database": {"cost_weight": 0.01},        "send_email": {"cost_weight": 0.10},        "process_payment": {"cost_weight": 5.00},    },    on_exceeded="escalate",   # pause | stop | escalate)
[n.06/07]> operate

Steer, update and manage agents while they run.

A running agent is not a black box. Let it adapt within limits, message it, and run the fleet from the API, the CLI or a manifest.

[01] Open mode

Agents that adapt inside guardrails.

Most agents are static: you define one, deploy it and it does exactly that forever. In open mode an agent gets fourteen meta-tools to change itself, coordinate and inspect its own state, within limits you set.

What you get
  • Self: modify_instructions, create_tool, connect_mcp_server, add_trigger, remove_trigger
  • Coordination: spawn_process, list_processes
  • Memory: store_memory, search_memory, forget_memory
  • Introspection: get_secret, check_budget, check_mission, list_capabilities
  • Guardrails: instruction length, custom tool count, MCP URL allow-list, sandboxed tools, spawn limits
[n.07/07]> adoption path

Start with one scheduled agent and grow into a fleet.

The runtime is built to be adopted in steps. Each stage adds a capability without a rewrite.

[01]

One cron agent

A single AgentProcess with a cron trigger that checks something and reports back. In-memory journal for development.

[02]

Add persistence

Switch to the file journal so the agent survives restarts, and use AgentContext for state across invocations.

[03]

Several agents

One AgentRuntime manages many processes. The event bus connects them and budgets prevent surprise costs.

[04]

Govern and scale out

Health monitoring, missions and scoped secrets, then a multi-node RuntimeCoordinator and YAML manifests.

The runtime is not a replacement for Kubernetes or a scheduler. It is what runs inside them: the part that understands an agent’s state, cost and behavior.

Build agents that run for as long as you need.

Open source under Apache 2.0. pip install promptise to start.

Read the docsNext: Prompting
Promptise - AI Framework LogoPromptise

The foundation layer for agentic intelligence. Build, secure and operate autonomous AI systems with Promptise Foundry.

pip install promptise

[01] Foundry

  • MCPcast
  • The Promptise Agent
  • Reasoning Engine
  • MCP
  • Agent Runtime
  • Prompt Engineering
  • Execution Engine
  • Agent Identity

[02] Resources

  • Documentation
  • GitHub
  • Guides
  • Learning Paths
  • Questions

[03] Company

  • About
  • Terms of Service
  • Privacy Policy
  • Cookie Policy
  • Subprocessors

© 2026 Promptise by Manser Ventures. All rights reserved.

Open source · Python