# March 20, 2026 Update

Since the [last update](https://agentuity.com/blog/march-13-2026-update), we shipped **13 releases** and **64 commits** across the SDK. This week: using Agentuity services from anywhere just got a lot easier, you can create and manage OAuth/OIDC clients, and sandboxes gained background jobs. Let's get into it.

## Overview

- _Standalone service packages_ so you can use Agentuity KV, Vector, Queues, and more from any Node.js or Bun app
- _OAuth/OIDC application management_ with a full client lifecycle, secret rotation, and consent tracking
- _Sandbox background jobs_ for long-running processes that persist beyond a single exec call
- _CLI standardization_ with consistent aliases and a new `build --ci` command
- [And more!](https://agentuity.com/blog/march-20-2026-update#also-shipping)

## Standalone Service Packages

Each Agentuity cloud service now has its own dedicated npm package. Install just the service you need and use it from any JavaScript or TypeScript project:

| Package | Service |
| --- | --- |
| `@agentuity/keyvalue` | [Key-Value storage](https://agentuity.dev/services/storage/key-value) |
| `@agentuity/vector` | [Vector search](https://agentuity.dev/services/storage/vector) |
| `@agentuity/db` | [Database](https://agentuity.dev/services/database) |
| `@agentuity/queue` | [Queues](https://agentuity.dev/services/queues) |
| `@agentuity/email` | [Email](https://app.agentuity.com/services/email) |
| `@agentuity/sandbox` | [Sandboxes](https://agentuity.com/services/sandbox) |
| `@agentuity/task` | [Tasks](https://app.agentuity.com/services/task) |
| `@agentuity/schedule` | [Schedules](https://app.agentuity.com/services/schedule) |
| `@agentuity/webhook` | [Webhooks](https://app.agentuity.com/services/webhook) |

Each package provides a focused client for its service. Install, authenticate with your SDK key, and start calling methods:

```
import { KeyValueClient } from '@agentuity/keyvalue';

const kv = new KeyValueClient();

// Store structured data with optional TTL
await kv.set('users', 'user:123', { name: 'Alice', role: 'admin' }, {
  ttl: 3600, // expires in 1 hour
});

// Retrieve it
const result = await kv.get('users', 'user:123');
if (result.exists) {
  console.log(result.data); // { name: 'Alice', role: 'admin' }
}

// Search across keys
const matches = await kv.search('users', 'admin');
```

Clients resolve configuration from environment variables (`AGENTUITY_SDK_KEY`, `AGENTUITY_REGION`) automatically, or you can pass options explicitly:

```
const kv = new KeyValueClient({
  apiKey: process.env.MY_API_KEY,
  orgId: 'org_abc123',
});
```

These work anywhere: CLI tools, backend APIs, migration scripts, cron jobs, or any code outside the Agentuity runtime. Set your API key, install the package, and go.

## OAuth Application Management

A full OAuth 2.0 / OIDC lifecycle is now available through both the SDK and CLI. You can create OAuth clients, rotate secrets, manage user consent, and inspect activity logs.

```
# Create an OAuth client
agentuity cloud oidc create --name "My App" --redirect-uris "https://myapp.com/callback"

# List all clients
agentuity cloud oidc list

# Rotate a client secret
agentuity cloud oidc rotate-secret <client-id>

# View authorized users
agentuity cloud oidc users <client-id>

# Inspect activity logs
agentuity cloud oidc activity <client-id>
```

On the SDK side, new helpers handle the authorization code flow with token exchange and userinfo retrieval. Configuration resolves automatically from environment variables:

```
import { buildAuthorizeUrl, exchangeToken, fetchUserInfo } from '@agentuity/core/oauth';

// Build the authorization URL for redirecting users
const url = buildAuthorizeUrl('https://myapp.com/callback', {
  clientId: process.env.OAUTH_CLIENT_ID,
  issuer: 'https://auth.agentuity.cloud',
});

// After the user returns with an authorization code
const tokens = await exchangeToken(code, 'https://myapp.com/callback');
const user = await fetchUserInfo(tokens.access_token);
```

With these tools you can build apps and integrations that authenticate users through Agentuity. Create a client, point your app at the authorize URL, and let Agentuity handle the consent flow.

## Sandbox Background Jobs

[Sandboxes](https://agentuity.com/product/sandboxes) now support background jobs: persistent processes that run independently of your exec calls. Start a dev server, a file watcher, or any long-running daemon, and it keeps running until you stop it.

```
# Start a background job
agentuity cloud sandbox job create <sandbox-id> -- bun run dev

# List running jobs
agentuity cloud sandbox job list <sandbox-id>

# Check a specific job
agentuity cloud sandbox job get <sandbox-id> <job-id>

# Stop a job
agentuity cloud sandbox job destroy <sandbox-id> <job-id>
```

Jobs have lifecycle states (pending, running, completed, failed, cancelled) and can optionally stream stdout/stderr. Combined with the [sandbox pause and resume](https://agentuity.com/blog/march-13-2026-update#also-shipping) from last week, you can now checkpoint a sandbox with running jobs, pause it to save compute, and resume later with everything intact.

This opens up workflows like running persistent dev servers for testing, background build watchers, or long-running data processing inside isolated environments.

## Also Shipping

**SDK and Runtime**

- **`build --ci` command** — `agentuity build --ci` runs the full build lifecycle (typecheck, bundle, validate) for CI/CD pipelines. Designed for automated environments where you need a single command with proper exit codes.
- **Sandbox events** — `agentuity cloud sandbox events <id>` lists lifecycle events (create, start, stop, terminate) with filtering and pagination.
- **Task status aliases** — `completed` and `closed` now map to `done`, `started` maps to `in_progress`. Less friction when querying the [task API](https://agentuity.dev/reference/api/tasks).
- **`cp --strict` flag** — `agentuity cloud sandbox fs cp --strict` disables automatic parent directory creation during file copies, catching path mistakes before they cause silent misplacement.
- **`autoResumed` in execution response** — Execution responses now indicate whether a sandbox was automatically resumed from a checkpoint, so you can distinguish cold starts from warm restarts.
- **Duplicate eval detection** — The build now catches duplicate eval names across agent files and `eval.ts` at compile time.

**CLI Improvements**

- **Subcommand standardization** — Consistent aliases across all CLI commands: `rm`, `remove`, `delete`, and `destroy` all work. `show`, `get`, `info`, and `inspect` all work. Sandbox filesystem commands are reorganized under `sandbox fs`. Muscle memory from other tools just works.
- **`--org` alias** — Short alias for `--org-id` across all commands.
- **Structured JSON errors** — When using `--json`, errors now return structured JSON instead of plain text. Better for scripted workflows and AI agents parsing CLI output.

We also published a guide on [running Mastra agents on Agentuity](https://agentuity.com/blog/mastra-on-agentuity) if you're using Mastra for agent orchestration.

**Bug Fixes**

- Tailwind v4 oxide scanner hanging in containers, with a follow-up fix for `source(none)` in dev mode
- Sandbox `execute()` long-poll retry logic and `readFile` error handling
- Windows path handling for AI SDK patches, zip portability, and JSONC parsing
- Dev mode TypeScript error handling and error recovery in the file watcher
- Route migration prompts no longer block non-interactive environments
- Deploy uploads now include proper `Content-Length` headers
- CLI upgrade command skips confirmation when explicitly invoked
- Sandbox exec timeout validation and terminated sandbox access

## A Look Ahead

The first beta of SDK v2 is available on npm. The headline changes: file-based routing is removed in favor of explicit Hono routing, and `bun --hot` replaces the manual file watcher for backend HMR. This is a breaking change, and we'll share a full migration guide when v2 goes stable.

## Upgrade Now

The CLI will prompt you automatically when a new version is available, or you can upgrade manually:

```
agentuity upgrade
```

New to Agentuity? Get started in seconds:

```
curl -fsSL https://agentuity.sh | sh
```

Once you're upgraded:

- Install a standalone package: `npm install @agentuity/keyvalue`
- Create an OAuth client: `agentuity cloud oidc create`
- Run a background job: `agentuity cloud sandbox job create <id> -- bun run dev`
