Skip to content

inkbox-ai/inkbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

268 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Inkbox

https://inkbox.ai

PyPI npm License: MIT

API-first communication infrastructure for AI agents — email, phone, identities, and encrypted vault (login credentials, API keys, key pairs, SSH keys, OTP, etc.).

Package Language Install
inkbox Python ≥ 3.11 pip install inkbox
@inkbox/sdk TypeScript / Node ≥ 18 npm install @inkbox/sdk
@inkbox/cli CLI / Node ≥ 18 npm install -g @inkbox/cli

Quick Start

Get an API key from the Inkbox Console, then:

Python

from inkbox import Inkbox

with Inkbox(api_key="ApiKey_...") as inkbox:
    # Create an agent identity with a linked mailbox
    identity = inkbox.create_identity("my-agent", display_name="My Agent")
    identity.provision_phone_number(type="toll_free")

    # Send an email
    identity.send_email(
        to=["user@example.com"],
        subject="Hello",
        body_text="Hi from my agent!",
    )

    # List recent emails
    for msg in identity.iter_emails():
        print(msg.subject, msg.from_address)

    # Place a phone call
    call = identity.place_call(to_number="+15551234567")

    # Read text messages (SMS/MMS)
    for t in identity.list_texts():
        print(t.remote_phone_number, t.text)

TypeScript

import { Inkbox } from "@inkbox/sdk";

const inkbox = new Inkbox({ apiKey: "ApiKey_..." });

// Create an agent identity with a linked mailbox
const identity = await inkbox.createIdentity("my-agent", { displayName: "My Agent" });
const phone = await identity.provisionPhoneNumber({ type: "toll_free" });

// Send an email
await identity.sendEmail({
  to: ["user@example.com"],
  subject: "Hello",
  bodyText: "Hi from my agent!",
});

// List recent emails
for await (const msg of identity.iterEmails()) {
  console.log(msg.subject, msg.fromAddress);
}

// Place a phone call
const call = await identity.placeCall({ toNumber: "+15551234567" });

// Read text messages (SMS/MMS)
const texts = await identity.listTexts();
for (const t of texts) {
  console.log(t.remotePhoneNumber, t.text);
}

CLI

# Create an agent identity (mailbox is created automatically)
inkbox identity create my-agent

# Send an email
inkbox email send -i my-agent \
  --to user@example.com \
  --subject "Hello" \
  --body-text "Hi from my agent!"

# List recent emails
inkbox email list -i my-agent --limit 10

# Place a phone call
inkbox phone call -i my-agent --to +15551234567

# Read text messages
inkbox text list -i my-agent

# Initialize vault (first time only — requires INKBOX_VAULT_KEY)
inkbox vault init --vault-key "my-vault-key"

# Manage vault secrets
inkbox vault create --name "CRM Login" --type login --username bot@crm.com --password s3cret
inkbox vault secrets
inkbox vault get <secret-id>

Agent Signup

Agents can self-register without a pre-existing API key. The flow provisions a mailbox, identity, and API key in one call:

Python

from inkbox import Inkbox

# 1. Sign up (no API key needed)
result = Inkbox.signup(
    human_email="john@example.com",
    display_name="My Agent",
    note_to_human="Hey John, this is your agent signing up!",
)
api_key = result.api_key  # save this — shown only once

# 2. Verify (after human shares the 6-digit code)
Inkbox.verify_signup(api_key, verification_code="483921")

# 3. Use the API key
with Inkbox(api_key=api_key) as inkbox:
    identity = inkbox.get_identity(result.agent_handle)
    identity.send_email(to=["john@example.com"], subject="Hello!", body_text="I'm set up.")

TypeScript

import { Inkbox } from "@inkbox/sdk";

// 1. Sign up (no API key needed)
const result = await Inkbox.signup({
  humanEmail: "john@example.com",
  displayName: "My Agent",
  noteToHuman: "Hey John, this is your agent signing up!",
});
const apiKey = result.apiKey; // save this — shown only once

// 2. Verify (after human shares the 6-digit code)
await Inkbox.verifySignup(apiKey, { verificationCode: "483921" });

// 3. Use the API key
const inkbox = new Inkbox({ apiKey });
const identity = await inkbox.getIdentity(result.agentHandle);
await identity.sendEmail({ to: ["john@example.com"], subject: "Hello!", bodyText: "I'm set up." });

CLI

# 1. Sign up (no --api-key needed)
inkbox signup create --human-email john@example.com --display-name "My Agent" \
  --note-to-human "Hey John, this is your agent signing up!"

# 2. Verify (after human shares the 6-digit code)
inkbox signup verify --code 483921

# 3. Check status
inkbox signup status

What's in this repo

Directory Description
sdk/python/ Python SDK (inkbox)
sdk/typescript/ TypeScript SDK (@inkbox/sdk)
cli/ CLI (@inkbox/cli)
skills/inkbox-python/ Python agent skill for Claude Code and other coding agents
skills/inkbox-ts/ TypeScript agent skill for Claude Code and other coding agents
skills/inkbox-openclaw/ Inkbox OpenClaw skill — email and phone for your OpenClaw agent
examples/use-inkbox-browser-use/ Inkbox + Browser Use — give your agent an email, phone, and vault
examples/use-inkbox-kernel/ Inkbox + Kernel — give your agent an email and browser
examples/use-inkbox-cli/ Shell script examples for CLI automation and CI pipelines
examples/use-inkbox-vault/ Vault TOTP example — create credentials with one-time codes

Agent Skills

Load the Inkbox skills into your coding agent so it automatically knows how to use the SDK:

npx skills add inkbox-ai/inkbox/skills

See skills/README.md for details.


Documentation

License

MIT

Releases

No releases published

Packages

 
 
 

Contributors