Skip to content

Releases: DrobyshevDev/glia

glia v0.8.2 — logo & de-slop

Choose a tag to compare

@DenisDrobyshev DenisDrobyshev released this 24 Jul 16:45

A visual polish pass on the v0.8 GUI.

  • New logo — a minimal 'glass box' mark (a transparent cube with a node), tying the identity directly to the glass-box concept. It now appears in the app (sidebar, message avatars, favicon), the README, and the animated hero.
  • Removed all emoji and decorative glyphs from the app UI, README, and docs for a cleaner, more professional look — buttons use plain text or minimal line icons, and the empty-state copy is less generic.

No API changes. Fresh binaries attached.

Install/upgrade: pip install -U glia-agents

glia v0.8.1

Choose a tag to compare

@DenisDrobyshev DenisDrobyshev released this 24 Jul 10:03

Patch on top of the v0.8.0 GUI redesign.

Fixed: shell conversation IDs were millisecond-based and could collide when two conversations were created in the same millisecond. IDs are now unique (timestamp + a short uuid).

Everything from v0.8.0 (modern multi-conversation GUI: persistent sidebar history, Markdown/code rendering, theme toggle, glass-box drawer) carries over. Fresh binaries attached.

Install/upgrade: pip install -U glia-agents

glia v0.8.0 — a modern GUI

Choose a tag to compare

@DenisDrobyshev DenisDrobyshev released this 24 Jul 09:57

A full redesign of the desktop shell into a modern, professional chat app.

What's new

  • Conversation sidebar with persistent history — your chats are saved (as glia trajectory checkpoints) and survive restarts. New / switch / delete from the sidebar.
  • Markdown + code rendering — replies render bold, lists, links, headings, and fenced code blocks with copy buttons (safely escaped).
  • Cleaner layout — a proper top bar, example-prompt chips on the empty state, a slide-in glass-box drawer, a light/dark theme toggle, and a refined settings panel with a segmented provider control.
  • All four providers (Demo / Ollama / Claude / OpenAI), streaming, tools, and interactive approval carry over.

Fresh Windows/macOS/Linux binaries attached below. 167 offline tests, ~95% coverage, ruff + mypy + tests green.

Install/upgrade: pip install -U glia-agents · Docs: https://denisdrobyshev.github.io/glia/app/

glia v0.7.0 — OpenTelemetry + shell redesign

Choose a tag to compare

@DenisDrobyshev DenisDrobyshev released this 23 Jul 08:40

OpenTelemetry exporter

Turn the event stream into spans with one hook:

from glia.integrations.otel import OTelExporter
agent = Agent(llm, tools=[...], hooks=[OTelExporter()])

Root glia.run span with child glia.model_call / glia.tool spans (model, token, and stop-reason attributes; tool errors marked; approvals + compaction as span events). pip install "glia-agents[otel]". It never raises into your run.

Redesigned desktop shell

A refreshed, more polished UI — warmer palette, refined typography, softer message bubbles with entrance animations, a cleaner glass-box panel, and a nicer composer. The README now has an animated hero that plays the shell in action. Fresh Windows/macOS/Linux binaries attached below.

163 offline tests, ~95% coverage, ruff + mypy + tests green.

Install/upgrade: pip install -U glia-agents · Docs: https://denisdrobyshev.github.io/glia/

glia v0.6.0 — record/replay cassettes

Choose a tag to compare

@DenisDrobyshev DenisDrobyshev released this 23 Jul 07:32

Record/replay cassettes — VCR for the LLM protocol.

Record a real provider's responses to a readable JSON cassette once, then replay them deterministically with no network and no API key:

from glia import Agent, use_cassette
from glia.providers import ClaudeLLM

# First run records (needs a key); later runs replay offline — identical output.
llm = use_cassette("tests/cassettes/weather.json", ClaudeLLM)
agent = Agent(llm, tools=[get_weather])
  • RecordingLLM / ReplayLLM (request-key match + ordered fallback; strict=True for exact). Streaming both directions.
  • use_cassette records if the cassette is missing, replays if it exists.

159 offline tests, ~95% coverage, ruff + mypy + tests green. Example: 09_record_replay.py.

Install/upgrade: pip install -U glia-agents

glia v0.5.0 — OpenAI, interactive approval, MCP

Choose a tag to compare

@DenisDrobyshev DenisDrobyshev released this 23 Jul 00:55

Four improvements in one release.

OpenAI provider

OpenAILLM works with OpenAI and any OpenAI-compatible endpoint (Groq, Together, OpenRouter, local vLLM) via base_url — zero dependencies, streaming + tools.

from glia.providers import OpenAILLM
agent = Agent(OpenAILLM("gpt-4o-mini", api_key="sk-..."))

Interactive tool approval in the desktop shell

Turn on "Ask before running each tool" and the shell shows an Approve / Deny prompt in the window — the run pauses until you decide. The download now also has an OpenAI provider mode. Fresh binaries attached below.

MCP tool bridge

Use any MCP server's tools as glia tools:

from glia.integrations.mcp import mcp_stdio_tools
async with mcp_stdio_tools("npx", ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]) as tools:
    agent = Agent(llm, tools=tools)

(pip install "glia-agents[mcp]")

Rigor

mypy is now a CI gate; test suite at 151 offline tests, ~95% coverage; new README hero image.

Install/upgrade: pip install -U glia-agents · Docs: https://denisdrobyshev.github.io/glia/

glia v0.4.0 — local models via Ollama

Choose a tag to compare

@DenisDrobyshev DenisDrobyshev released this 22 Jul 21:45

Run local open models (Qwen, DeepSeek, Llama, …) with glia — free, offline, no API key.

New: OllamaLLM provider

# install Ollama from https://ollama.com, then:
ollama pull qwen2.5          # or: ollama pull deepseek-r1
from glia import Agent
from glia.providers import OllamaLLM
agent = Agent(OllamaLLM("qwen2.5"), system="Be concise.")
  • Talks to a local Ollama server over stdlib HTTP — zero dependencies.
  • Streaming + tool calling for models that support it.

Desktop shell

The downloadable app now has an Ollama provider mode in Settings (pick a local model like qwen2.5 or deepseek-r1). Fresh Windows/macOS/Linux binaries are attached below.

Also

  • 129 offline tests; new example 08_ollama_local.py; docs updated (EN/RU).

Install/upgrade: pip install -U glia-agents · Docs: https://denisdrobyshev.github.io/glia/

glia v0.3.0 — desktop shell

Choose a tag to compare

@DenisDrobyshev DenisDrobyshev released this 22 Jul 21:24

A downloadable graphical shell for glia: a chat window that also shows the live glass box (streaming tokens, tool calls, approvals) as it happens.

Download (no Python needed)

Grab the standalone build for your OS below:

  • Windowsglia-shell-windows.exe
  • macOSglia-shell-macos
  • Linuxglia-shell-linux

Double-click to run; it opens a local chat app in your browser. Works offline in demo mode out of the box — add an Anthropic API key in Settings to chat with real Claude.

Or install from PyPI (native window)

pip install "glia-agents[shell]"
glia-shell

Under the hood

  • Runs a real glia.Agent; streams every event to a self-contained single-page UI.
  • Pure-stdlib local server (no web framework); native window via pywebview with a browser fallback.
  • Docs: https://denisdrobyshev.github.io/glia/app/ · 110→119 offline tests.

Full changelog: https://github.com/DenisDrobyshev/glia/blob/master/CHANGELOG.md

glia v0.2.1

Choose a tag to compare

@DenisDrobyshev DenisDrobyshev released this 22 Jul 19:32

Tests and docs release (no API changes to the agent loop).

Docs

  • New bilingual (EN/RU) documentation site built with MkDocs Material + i18n — home, getting started, guide, and architecture in English and Русский, auto-deployed to GitHub Pages: https://denisdrobyshev.github.io/glia/
  • Added README.ru.md and a language switcher.

Tests

  • Expanded to 110 offline tests, ~98% coverage, including full offline coverage of the Claude adapter via a fake client. CI now enforces a coverage floor.

Fix

  • _stringify (tool-result rendering) JSON-encodes only containers and uses str() otherwise — a plain object is no longer wrapped in quotes.

Install/upgrade: pip install -U glia-agents

glia v0.2.0

Choose a tag to compare

@DenisDrobyshev DenisDrobyshev released this 22 Jul 14:09

Refinements that deepen the glass-box thesis — every new capability is visible in the event stream and off by default.

Added

  • Streaming outputAgent(stream=True) re-emits provider text deltas as ModelDelta events; new StreamChunk type and optional StreamingLLM protocol (ClaudeLLM via messages.stream, EchoLLM deterministic). Auto-falls back to generate when a provider can't stream.
  • Parallel tool execution — a turn's tool calls run concurrently (asyncio.gather, default on), with ToolCalled/ToolReturned events and results kept in call order.
  • Human-in-the-loop approvalapproval=<policy> gates every tool behind an inspectable verdict (ApprovalRequested/ApprovalResolved). Denied calls never execute and return an error result the model can react to. Policies: approve_all, deny_all, allow_only, deny, prompt_in_terminal.

32 offline tests, green CI, new example (07_streaming_and_approval.py).

Install/upgrade: pip install -U glia-agents