Skip to main content

A transparent, local-first AI assistant with tools, memory, gateways, and evaluation.

Project description

Weasley Assistant

Weasley Assistant: local-first, transparent, extensible

Weasley Assistant is a readable, local-first AI assistant for developers who want to own the agent loop, tools, memory, gateways, and evaluation harness. Its public command and Python package use the weasley-assistant / weasley_assistant names throughout.

Features

  • Transparent agent loop: model calls, tool results, iteration limits, and traces are explicit.
  • Layered memory: SQLite-backed semantic and episodic memory plus file-based procedural skills.
  • Local dashboard: inspect conversations, tools, memory, graph routes, traces, and evaluation.
  • Multiple gateways: terminal, Telegram, Discord, WhatsApp, and optional local voice.
  • Model choice: Anthropic, OpenAI, Gemini, DeepSeek, MiniMax, Kimi, GLM, OpenRouter, and compatible endpoints.
  • Safe extensibility: opt-in Apple/Google integrations, read-only GitHub tools, MCP connectors, and deterministic regression tests.
  • Operations: JSONL tracing, deterministic evaluation, optional LLM judging, and release gates.

Requirements

  • Python 3.11 or newer
  • An API key for the provider you select
  • Optional platform dependencies for voice and Apple integrations

Installation

From PyPI:

python -m pip install weasley-assistant

For development:

git clone https://github.com/potatohoney-p/weasley-assistant.git
cd weasley-assistant
python -m venv .venv
python -m pip install -e ".[dev]"

Copy the environment template, add one provider key, and start the CLI:

cp .env.example .env
weasley-assistant

Common commands:

weasley-assistant dashboard
weasley-assistant brief
weasley-assistant gather
weasley-assistant voice
weasley-assistant skill install <skill-url>

make run, make dashboard, make eval, and the other Make targets are equivalent shortcuts.

Configuration

Runtime state defaults to ~/.weasley/assistant. Set configuration with the WEASLEY_ASSISTANT_* namespace:

WEASLEY_ASSISTANT_PROVIDER=anthropic
WEASLEY_ASSISTANT_MODEL=
WEASLEY_ASSISTANT_SMALL_MODEL=
WEASLEY_ASSISTANT_HOME=~/.weasley/assistant
WEASLEY_ASSISTANT_MAX_ITERATIONS=10
WEASLEY_ASSISTANT_MAX_TOKENS=8192
WEASLEY_ASSISTANT_HISTORY_TURNS=12

Provider credentials keep their standard names, such as ANTHROPIC_API_KEY, OPENAI_API_KEY, or GEMINI_API_KEY. See .env.example for all gateways and optional backends.

Migration compatibility

Pre-rename environment variables remain one-way migration fallbacks when their public equivalents are absent. Likewise, an existing pre-rename cwd-local home is copied once when the new default does not yet exist; the source is never modified or deleted. New configuration, documentation, and dashboard writes use only WEASLEY_ASSISTANT_*. A narrow deprecated import and module-entry shim remains solely so existing installations can transition without losing access.

MCP connectors

Install the optional dependency and create ~/.weasley/assistant/mcp.json:

python -m pip install "weasley-assistant[mcp]"
{
  "servers": [
    {
      "name": "filesystem",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/safe/path"],
      "env": {}
    }
  ]
}

The file is validated against weasley_assistant/tools/mcp.schema.json before a connector thread starts. Server failures are isolated, and all sessions and the event-loop thread are closed when the assistant is rebuilt or stopped.

Project structure

Area Location
Public package and CLI weasley_assistant/
Agent loop and providers weasley_assistant/loop/
Memory weasley_assistant/memory/
Tools and MCP weasley_assistant/tools/
Gateways weasley_assistant/gateway/
Dashboard and evaluation ops weasley_assistant/ops/, evals/
Procedural skills skills/

Security

  • The dashboard binds to 127.0.0.1 by default.
  • Runtime state, OAuth material, tokens, and local environment files are git-ignored.
  • Discord server channels are deny-by-default until explicitly allowlisted.
  • WhatsApp webhooks require signature verification.
  • GitHub access is read-only by construction.
  • MCP configuration is schema-validated before subprocesses start; each connector is isolated.
  • Tool access and third-party gateways can incur API costs or mutate external systems. Enable only the integrations you understand and scope credentials to the minimum permissions required.

Please report vulnerabilities privately as described in SECURITY.md. Do not put credentials or exploit details in a public issue.

Testing

python -m pytest -q evals/deterministic
python -m ruff check weasley_assistant evals scripts

Judge-based evaluations are optional and require provider credentials:

python -m pytest -q evals/judge

Contributing

Read CONTRIBUTING.md, add deterministic tests for behavior changes, and keep optional integrations fail-safe when dependencies or credentials are absent. Issues and pull requests are tracked at potatohoney-p/weasley-assistant.

License

Apache License 2.0. See LICENSE and NOTICE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

weasley_assistant-0.1.1.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

weasley_assistant-0.1.1-py3-none-any.whl (258.5 kB view details)

Uploaded Python 3

File details

Details for the file weasley_assistant-0.1.1.tar.gz.

File metadata

  • Download URL: weasley_assistant-0.1.1.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for weasley_assistant-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ee0b0fb3a8c217867be00e8c46e6b4eabd9647cbee84f77cd9eaa8d8c1364f28
MD5 71d3201a018c93f8d5cb911e9ce67a4e
BLAKE2b-256 656e321db26b325bc663ba5425c20db728b8269d34756cf445a59813d66b8b2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for weasley_assistant-0.1.1.tar.gz:

Publisher: publish-pypi.yml on potatohoney-p/weasley-assistant

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file weasley_assistant-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for weasley_assistant-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0badf46f30e0099e38202c82b9998b19c7d6ce0409a8614714052c48277a5ace
MD5 e4b6614216b285fb30b4f806878ba416
BLAKE2b-256 fc1e5f3f0984202852fb2536e17ff6dbed39c41005126eb9bd5e106348cdb01b

See more details on using hashes here.

Provenance

The following attestation bundles were made for weasley_assistant-0.1.1-py3-none-any.whl:

Publisher: publish-pypi.yml on potatohoney-p/weasley-assistant

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page