Skip to main content

FreeHand

Your local AI agent, on your devices, in your channels.

FreeHand is a local-first AI agent system with OAuth integrations, cross-agent memory import, and Tailscale network access. Built for the South African market — free, open source, no vendor lock-in.

pip install freehand-agent
freehand serve
# Open http://localhost:8000

Features

  • 🔌 7 OAuth connectors — Gmail, Outlook, Zoom, Facebook, Instagram, GitHub, custom email (IMAP/SMTP)
  • 🔗 Cross-agent memory import — automatically detects and imports memories from Hermes Agent and OpenClaw
  • 🛠 17 agent tools — email, calendar, sheets, GitHub, Zoom, browser automation, document processing
  • 🔒 Permission tiers — Autonomous, Semi-Autonomous, God Mode with approval workflows
  • 💬 Remote gateways — Telegram, Slack, WhatsApp
  • 🧠 FTS5 memory search — full-text search across all vault notes
  • 📅 Task scheduler — cron-based task execution via scribble sweep
  • 🔐 Encrypted token storage — Fernet encryption for all OAuth tokens
  • 🌐 Tailscale support — accessible from anywhere on your tailnet

Install

Windows (PowerShell):

iwr https://freehand.tracysmith.co.za/install.ps1 -useb | iex

macOS / Linux:

curl -fsSL https://freehand.tracysmith.co.za/install.sh | bash

From PyPI

pip install freehand-agent
freehand init
freehand serve

From source

git clone https://github.com/TracySmithConsulting/freehand.git
cd freehand
pip install -e ".[all]"
freehand init
freehand serve

Quick Start

# 1. Install
pip install freehand-agent
freehand init

# 2. Start the server
freehand serve

# 3. Open in browser
# http://localhost:8000

# 4. Connect your accounts (Settings → OAuth Credentials)
# See docs/OAUTH_SETUP.md for step-by-step

CLI Commands

freehand serve                    # Start the web server
freehand init                     # Initialize database and vault
freehand sweep                    # Process pending scribble entries

# Connections
freehand connect <service>        # Start OAuth flow (google, microsoft, zoom, etc.)
freehand connections              # List all connections
freehand disconnect <service>     # Remove a connection
freehand test <service>           # Test if connection is valid

# Agents (cross-agent import)
freehand agents list              # Detect installed AI agents
freehand agents import hermes     # Import from Hermes Agent
freehand agents import openclaw   # Import from OpenClaw
freehand agents status            # Show import history
freehand agents remove <agent>    # Remove imported data

# Tools
freehand office read-docx <path>
freehand browser axtree <url>
freehand browser screenshot <url>

# Gateway
freehand gateway status
freehand gateway pair <phone>

OAuth Setup

See docs/OAUTH_SETUP.md for detailed instructions on registering apps with:

  • Google Cloud Console (Gmail, Calendar, Sheets, Meet)
  • Microsoft Entra ID (Outlook, Teams, Calendar)
  • Zoom Marketplace (Meetings, recordings)
  • Meta for Developers (Facebook, Instagram)
  • GitHub (PAT-based, no app registration needed)

Cross-Agent Memory Import

FreeHand can detect and import memories from other AI agents installed on your system:

Agent What gets imported
Hermes Agent SOUL.md, AGENTS.md, MEMORY.md, USER.md, config, 20+ skills, state.db (selective)
OpenClaw SOUL.md, IDENTITY.md, MEMORY.md, USER.md, AGENTS.md, journal entries

Run freehand agents list to detect, then freehand agents import hermes --state to import.

Architecture

┌─────────────────────────────────────────────┐
│  Web UI  (static/index.html)                │
│  http://localhost:8000                      │
└──────────────────┬──────────────────────────┘
                   │ FastAPI
┌──────────────────▼──────────────────────────┐
│  server.py     core/                        │
│  ┌─────────────┴─────────────────────────┐  │
│  │  /api/agent/command    ← LLM agent    │  │
│  │  /api/integrations/*   ← OAuth flows  │  │
│  │  /api/agents/*         ← import mgmt  │  │
│  │  /api/tools/*          ← tool API     │  │
│  └───────────────────────────────────────┘  │
│                                             │
│  core/agents/     ← detection & import      │
│  core/oauth/      ← token management        │
│  core/tools/      ← office, browser, integrations│
│  core/memory/     ← FTS5 search           │
│  core/security/   ← permission tiers        │
│  core/gateway/    ← Telegram/Slack/WhatsApp │
│  core/scheduler/  ← cron-based sweep      │
└──────────────────┬──────────────────────────┘
                   │
┌──────────────────▼──────────────────────────┐
│  vault/              ← user data            │
│  agent.db            ← SQLite (FTS5)       │
│  connections.json    ← encrypted tokens    │
│  imports/hermes/     ← imported memories   │
│  imports/openclaw/   ← imported memories   │
└─────────────────────────────────────────────┘

API Endpoints

Method Path Description
GET /api/v1/status Service status
POST /api/agent/command Run agent command
GET /api/integrations List integrations
GET /api/integrations/{service}/authorize Get OAuth URL
GET /api/integrations/callback/{service} OAuth callback
POST /api/integrations/{service}/disconnect Remove connection
GET /api/agents Detect installed agents
POST /api/agents/import Import from agent
GET /api/agents/imported Import history

Full API reference: API Documentation

Security

  • All OAuth tokens are encrypted at rest using Fernet (AES-128-CBC + HMAC-SHA256)
  • Encryption key is auto-generated on first run at vault/encryption.key (mode 0o600)
  • Permission tiers enforce approval workflows for write operations
  • Nango removed — all OAuth is handled in-process
  • No telemetry or data collection

License

MIT — see LICENSE

Contributing

See CONTRIBUTING.md

Changelog

See CHANGELOG.md

Metadata

Release files for freehand-agent 0.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for freehand-agent 0.1.8
File Size Uploaded Provenance Actions
freehand_agent-0.1.8.tar.gz 93.2 kB Without provenance Details for freehand_agent-0.1.8.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for freehand-agent 0.1.8
File Interpreter ABI Platform Actions
freehand_agent-0.1.8-py3-none-any.whl Python 3 none any Details for freehand_agent-0.1.8-py3-none-any.whl

Total release size: 198.7 kB

Release files / freehand_agent-0.1.8.tar.gz

Download URL freehand_agent-0.1.8.tar.gz
Size 93.2 kB
Tags Source
SHA-256 checksum
How to use checksums
eb177f1e251511000a371f23b7403cee4e87a59aee5ca5ac8c83a7d1111f6996
BLAKE2b-256 checksum
How to use checksums
30257415f160f525656257d08ef1215553d2d3cef5445ad116ecdb78c20d7487
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / freehand_agent-0.1.8-py3-none-any.whl

Download URL freehand_agent-0.1.8-py3-none-any.whl
Size 105.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8de7043f21c207ad31aaba84c78ece70ee5780b204a1939371ee025957add8cc
BLAKE2b-256 checksum
How to use checksums
e02e8e49d223700386baa329fb3339356f329eef0b7857af06c8dda43ac3e8c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Security for freehand-agent 0.1.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page