Skip to main content

safaai

TUI-first developer workstation optimizer.

Understands your machine instead of blindly cleaning it.

Never delete automatically. Explain everything. Every cleanup is previewable. Every action can be dry-run.

Quick start

uv run safaai

Opens the TUI dashboard. Press / for slash commands.

Requirements

  • macOS (Apple Silicon, v0.1 targets macOS)
  • Python 3.13+ (managed via uv)
  • Textual terminal UI framework

Installation

git clone <repo> safaai
cd safaai
uv sync

Development

uv run safaai         # Run the TUI
uv run pytest        # Run all tests
uv run python -c …   # Quick check

Project structure

safaai/
├── safaai/               # Python package
│   ├── __init__.py
│   ├── __main__.py      # Entry: `uv run safaai`
│   ├── app.py           # SafaaiApp(App) + screen routing
│   ├── config.py        # Pydantic settings schema
│   ├── css/             # Per-screen CSS modules
│   │   ├── dashboard.py
│   │   └── screens.py
│   ├── screens/         # Textual Screen subclasses
│   │   └── dashboard.py
│   ├── scanners/        # Plugin scanners (added per task)
│   ├── commands/        # Slash command providers
│   ├── workflows/       # LangGraph pipeline engine
│   ├── widgets/         # Custom Textual widgets
│   ├── actions/         # Executor, trash, kill
│   └── core/            # HealthScore, journal
├── tests/               # Per-task test files
├── AGENTS.md            # Coding agent guide
├── graphify-out/        # Code knowledge graph (auto)
└── .hermes/plans/       # Implementation plans

Manual testing

After any change:

# 1. Run unit tests
uv run pytest -v

# 2. Run the TUI app (type q to quit)
uv run safaai

# 3. Import smoke test
uv run python -c "from safaai.app import SafaaiApp; print('import OK')"

# 4. Headless widget test
uv run python -c "
import asyncio
from safaai.app import SafaaiApp
app = SafaaiApp()
async def t():
    async with app.run_test() as p:
        await p.pause()
        print('dashboard:', app.screen.__class__.__name__)
asyncio.run(t())
"

Philosophy

  1. Never delete automatically — every action is preview + confirm.
  2. Explain everything — show what will happen and why.
  3. Previewable — see what would be cleaned before committing.
  4. Dry-run by default — destructive commands default to dry-run.

Metadata

Release files for safaai 0.1.0

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

Source distribution (sdist)

Source distribution for safaai 0.1.0
File Size Uploaded
safaai-0.1.0.tar.gz 480.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for safaai 0.1.0
File Interpreter ABI Platform
safaai-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 563.2 kB

Release files / safaai-0.1.0.tar.gz

Download URL safaai-0.1.0.tar.gz
Size 480.1 kB
Tags Source
SHA-256 checksum
How to use checksums
82669498b7b159822c1c0b74b947167ae7c7a447c3fb469a3eeb972a08e4ce6d
BLAKE2b-256 checksum
How to use checksums
000429e6d02344fd94584dc8b06da7c1c148a4ce40f66d181aa590e41f9cba04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / safaai-0.1.0-py3-none-any.whl

Download URL safaai-0.1.0-py3-none-any.whl
Size 83.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bd45cd5b856bb16788a9a300ebd838072ec479ad7267ab671b086e662f6a89e2
BLAKE2b-256 checksum
How to use checksums
a29cd35a4a69ef849354960d776d64c19db629c00edba6830ccaec3fb6abda7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.3

2 release files

0.1.2

2 release files

This release

0.1.0 This release

2 release files

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