Skip to main content

SUNWÆE CLI — The Almost Everything CLI

Project description

SUNWAEE CLI

The Almost Everything CLI - The command-line interface for SUNWAEE.

Used as a daily driver by human users and as a structured interface by Sun, the SUNWAEE AI agent.


Installation

pip install sunwaee

Or for local development:

git clone https://github.com/sunwaee/cli
cd cli
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

The binary is sunwaee.


Usage

sunwaee --help
sunwaee workspace --help
sunwaee note --help
sunwaee task --help

Init

Run once after installation to create the config file and default workspace:

sunwaee init                          # creates 'personal' workspace (default)
sunwaee init --workspace pro          # creates a custom default workspace
sunwaee init --force                  # re-initialise even if already set up

Workspaces

All data is organized by workspace. Use sunwaee init on first run, or manage workspaces manually:

sunwaee workspace create personal
sunwaee workspace create pro
sunwaee workspace list
sunwaee workspace set-default pro
sunwaee workspace delete personal --confirm

Notes

sunwaee note create --title "Meeting notes" --tags "work,q1" --body "Discussed roadmap."
sunwaee note create --title "Ideas" --workspace personal

sunwaee note list
sunwaee note list --workspace pro
sunwaee note list --tags work
sunwaee note list --sort title            # updated (default), created, title

sunwaee note show "Meeting notes"
sunwaee note show "Meeting notes" --workspace pro

sunwaee note edit "Meeting notes" --body "Updated content."
sunwaee note search "roadmap"
sunwaee note search "roadmap" --workspace pro
sunwaee note delete "Meeting notes" --confirm

Tasks

# Create
sunwaee task create --title "Fix login bug" --priority high --due 2026-03-01 --tags "dev"
sunwaee task create --title "Write docs" --priority low --workspace pro
sunwaee task create --title "Quick task" --due today

# List — completed tasks are hidden by default
sunwaee task list
sunwaee task list --status todo --priority high
sunwaee task list --due today               # today, tomorrow, this-week, this-month, overdue, YYYY-MM-DD
sunwaee task list --sort priority           # updated (default), created, title, due, priority
sunwaee task list --show-completed          # include completed tasks

# Show / complete / uncomplete
sunwaee task show "Fix login bug"
sunwaee task complete "Fix login bug"
sunwaee task uncomplete "Fix login bug"

# Edit
sunwaee task edit "Fix login bug" --status in_progress --tags "dev,urgent"
sunwaee task edit "Fix login bug" --due tomorrow
sunwaee task edit "Fix login bug" --clear-due  # remove due date

sunwaee task search "login"
sunwaee task delete "Fix login bug" --confirm

Subtasks

Use --parent to link a task to a parent. task complete and task delete cascade to all children.

sunwaee task create --title "Sub Task" --parent "Fix login bug"

# Completing or deleting a parent also affects all its children
sunwaee task complete "Fix login bug"
sunwaee task delete "Fix login bug" --confirm

task list displays subtasks indented under their parent. task show lists children inline.


Configuration

On first run, a config file is created at ~/.sunwaee/config.toml:

[workspaces]
default = "personal"
base_dir = "~/sunwaee/workspaces"

Any value can be overridden with environment variables:

Variable Default Description
SUNWAEE_CONFIG_DIR ~/.sunwaee Config directory
SUNWAEE_WORKSPACES_DIR ~/sunwaee/workspaces Workspaces base directory
SUNWAEE_WORKSPACE personal Active workspace (overrides config)
SUNWAEE_CALLER human Caller context (see below)
SUNWAEE_LOG_LEVEL warning Log level (debug, info, warning, error, critical)

Caller Modes

The SUNWAEE_CALLER environment variable controls output format and behavior.

Value Output Set by
human Rich colored output Default (terminal users)
api JSON SUNWAEE app API (docker exec / SSH)
sun JSON Sun AI agent

Success response (api/sun):

{"ok": true, "data": {...}}

Error response (any caller):

{ "ok": false, "error": "Note not found", "code": "NOT_FOUND" }

Error codes: NOT_FOUND, ALREADY_EXISTS, VALIDATION_ERROR, IO_ERROR, CONFIRMATION_REQUIRED.


Data Storage

Data is stored as Markdown files with YAML frontmatter - human-readable and Git-friendly.

~/sunwaee/workspaces/
├── personal/
│   ├── notes/
│   │   └── meeting-notes.md
│   └── tasks/
│       └── fix-login-bug.md
└── pro/
    ├── notes/
    └── tasks/

Note (~/sunwaee/workspaces/<workspace>/notes/<slug>.md):

---
id: b80543a8-5039-461b-8257-dd926f4bc5bb
title: Meeting notes
tags:
  - work
  - q1
created_at: "2026-02-27T23:24:05.330348+00:00"
updated_at: "2026-02-27T23:24:05.330357+00:00"
---

Note body in Markdown.

Task (~/sunwaee/workspaces/<workspace>/tasks/<slug>.md):

---
id: 707a888f-f0b0-49d1-a878-78df9c932c24
title: Fix login bug
status: todo
priority: high
due_date: "2026-03-01"
tags:
  - dev
parent_id: null
completed_at: null
created_at: "2026-02-27T23:24:14.253188+00:00"
updated_at: "2026-02-27T23:24:14.253195+00:00"
---

Task description in Markdown.

Adding a Module

The CLI auto-discovers modules. To add a new domain:

  1. Create sunwaee/modules/<name>/ with __init__.py, model.py, commands.py
  2. Export app = typer.Typer(name="<name>", ...) in __init__.py
  3. Done — no changes to core code required

Data for the new module lives at ~/sunwaee/workspaces/<workspace>/<name>/.


License

MIT

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

sunwaee-1.0.0.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

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

sunwaee-1.0.0-py3-none-any.whl (25.1 kB view details)

Uploaded Python 3

File details

Details for the file sunwaee-1.0.0.tar.gz.

File metadata

  • Download URL: sunwaee-1.0.0.tar.gz
  • Upload date:
  • Size: 31.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for sunwaee-1.0.0.tar.gz
Algorithm Hash digest
SHA256 8b43bf040e5144480da1cfc9cfe49fa58d90fdfdddd4675cbcdfeef608850290
MD5 7b088072d3ff45f47b86137439ea9334
BLAKE2b-256 f07e3672d5d924740d972cce89cb904cfbe2c9cc022ff341b672f622d7854b8a

See more details on using hashes here.

File details

Details for the file sunwaee-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: sunwaee-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 25.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for sunwaee-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c94132f2c00fc0d2313bb0ca9701c99b3680af491a10cb0cf47a707b3fa7cc3e
MD5 006550130c1d26d2f32bd3930c170a6b
BLAKE2b-256 85dfb5a05f43de872ab81f9c8a9460992f9b20843726a590ccae185c17078c42

See more details on using hashes here.

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