Start here
npx @skyporch/daykeeper-cli init --name "Acme Support" --plan free --jsonRe-running the command resumes the same workspace. It never creates a second one. Drop the --json flag for readable output.
daykeeperAgents
No human signup required. No human login, credit card, website, or DNS required for an API inbox.
The command enrolls a machine owner, creates a Free workspace with one API inbox, activates it, and stores the credential on your machine. A typical run finishes in under a minute. Our last measured run took nine seconds.
Start here
npx @skyporch/daykeeper-cli init --name "Acme Support" --plan free --jsonRe-running the command resumes the same workspace. It never creates a second one. Drop the --json flag for readable output.
Every step is explicit and resumable. The command exits only after the inbox can accept traffic.
Registers a machine owner with a signed key. There is no browser step and no password.
Creates a Free workspace with one API inbox, then waits for provisioning to reach a terminal state.
Turns on inbox traffic after provisioning reports success, so the inbox is usable when the command exits.
Writes the credential to ~/.config/daykeeper/credentials.json at mode 0600 and an MCP config to ~/.config/daykeeper/mcp.json.
Structured output on stdout. Take the tenant ID and endpoints from here instead of parsing prose. The credential goes to disk, not into your shell history.
{
"ok": true,
"data": {
"workspace": {
"organizationId": "…",
"name": "Acme Support",
"plan": "free"
},
"inbox": {
"tenantId": "…",
"slug": "acme-support",
"trafficEnabled": true
},
"endpoints": {
"apiUrl": "https://api.mydaykeeper.com",
"gatewayUrl": "https://gateway.mydaykeeper.com"
},
"credential": {
"storedAt": "~/.config/daykeeper/credentials.json"
},
"mcp": {
"configPath": "~/.config/daykeeper/mcp.json"
}
}
}The same run writes this block to ~/.config/daykeeper/mcp.json. Copy it into your agent client, or point the client at that file. The API key comes from the credential file the CLI just wrote.
Planning, mutations, inbox, activation, and operator tools are separate switches. Turn off the ones your agent should not hold.
{
"mcpServers": {
"daykeeper": {
"command": "npx",
"args": ["--yes", "@skyporch/daykeeper-mcp"],
"env": {
"DAYKEEPER_API_URL": "https://api.mydaykeeper.com",
"DAYKEEPER_API_KEY": "<from credentials.json>",
"DAYKEEPER_MCP_ENABLE_PLANNING": "true",
"DAYKEEPER_MCP_ENABLE_MUTATIONS": "true",
"DAYKEEPER_MCP_ENABLE_INBOX_TOOLS": "true",
"DAYKEEPER_MCP_ENABLE_ACTIVATION_TOOLS": "true",
"DAYKEEPER_MCP_ENABLE_OPERATOR_TOOLS": "true"
}
}
}
}Install @skyporch/daykeeper on a trusted server. Mint a short-lived customer token for each end user and let your app talk to the customer gateway with that token. Keep the API key out of browsers, mobile bundles, source control, command arguments, and logs.
import { DaykeeperClient } from "@skyporch/daykeeper";
const daykeeper = new DaykeeperClient({
baseUrl: process.env.DAYKEEPER_API_URL!,
apiKey: process.env.DAYKEEPER_API_KEY!,
});
// Give one end user a short-lived customer token.
const session = await daykeeper.customerSessions.create(tenantId, {
purpose: "customer",
subject: userId,
});
// Work the same inbox from the operator side.
const conversations = await daykeeper.operatorConversations.list(tenantId);
const thread = await daykeeper.operatorConversations.messages(conversationId);
await daykeeper.operatorConversations.reply(conversationId, { body: draft });What the one-command path does not cover.
Past setup, every change follows the same shape. Agents never need to scrape a dashboard or guess whether a write won.
Read server capabilities and the current workspace before choosing a tool or proposing a change.
Ask Daykeeper for a versioned plan. Show its changes, required scopes, warnings, and expiry to the owner.
Apply only the approved plan with a durable idempotency key. A timeout is an unknown outcome, not permission to repeat it.
Inspect the operation until it reaches a terminal state. Keep its correlation ID and next actions for recovery.
Run the CLI to enroll a machine owner and open a Free API inbox without human sign-in. Discover capabilities, inspect workspaces and operations, prepare plans, and apply changes allowed by a narrow credential.
Sign in through the browser console for website and email inboxes, accept commercial terms, approve paid plans and overage budgets, and issue or revoke agent access.
Complete DNS, identity-provider, app-store, and other changes whose authority lives outside Daykeeper. An API inbox needs none of them.
Published on npm
One command for machine-owner enrollment, workspace creation, inbox activation, credential storage, and MCP config. Re-running resumes instead of duplicating.
View CLI →Published on npm
The trusted server client for capabilities, workspace plan/apply, operations, flows, and customer-session exchange.
View SDK →Published on npm
A local stdio server for scoped agent tools. The CLI writes its config for you. There is no hosted MCP endpoint.
View MCP setup →The React Native, Web, iOS, Android, and Cordova clients are listed on the developers page with their current release state.
Hand the workspace your agent created to a person with one more command. It prints a link for them. They sign in to the console and own the workspace, and the agent keeps working.
npx @skyporch/daykeeper-cli claim --email you@company.comStarting without an agent? Sign up in the console. It covers website and email inboxes, paid plans, and overage budgets.
Open the consoleThe machine-readable index leads with the same command and carries the current package status.