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.

Weasley namespace

Configuration, documentation, dashboard writes, and package imports use the WEASLEY_ASSISTANT_*, ~/.weasley/assistant, and weasley_assistant namespaces exclusively.

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.2.0.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.2.0-py3-none-any.whl (257.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: weasley_assistant-0.2.0.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.2.0.tar.gz
Algorithm Hash digest
SHA256 548b3547a248648387634ecb9be45593d8c2f3dfb142d3107ddd56a3ee66a509
MD5 978b7bcc2090f0d4ede580618dc2d2e9
BLAKE2b-256 eee15499e70196fccde1e29f634fbaee218d3ee28d7bc64de5dc5e7da260cb87

See more details on using hashes here.

Provenance

The following attestation bundles were made for weasley_assistant-0.2.0.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.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for weasley_assistant-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7db23c8204885dbe26753269f8e515598cc43670816f90cd71e52a4c3f9db140
MD5 381c162c1135c3bd00aed40a8de54f76
BLAKE2b-256 2d4bca716822306a8ee4b86b8c74f8998570f48029a9a7e8a5575c04c125e3ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for weasley_assistant-0.2.0-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