AWiki Client Workspace Components

July 15, 2026 · View on GitHub

English | 简体中文

1. Why this is a workspace

Despite the historical awiki-cli-rs2 repository name, this repository contains several shared client surfaces: the CLI, Rust IM SDK, AWiki Daemon, Rust-Dart FFI, Flutter/Dart SDK, Agent Skills, and release/architecture documentation. Public documentation should explain the common goal first, then help each user choose an entry point.

2. Component boundaries

crates/im-core

The shared Rust SDK owns DID/handle identity registration and recovery, profiles and authentication; directory, contacts, relationships, and display projections; Direct/Group messages, conversation projections, read watermarks, outbox, and reliable sync; group lifecycle and secure hooks; attachments and manifests; high-level realtime/WebSocket sessions; email, content, sites, and local SQLite/redb state; and SecretVault/security boundaries.

It is the shared source of product truth for the CLI, Daemon, Dart facade, and native apps.

crates/awiki-cli

The thin CLI shell owns flags, configuration/path and file I/O, command parsing, dry-run plans, JSON/pretty/table/ndjson rendering, exit codes, and listener-service UX. It must not reimplement raw service RPC, WebSocket frames, local projections, or E2EE state machines.

crates/awiki-deamon

AWiki Daemon is the local Agent Runtime Host. Public text uses the correct Daemon spelling; the crate and binary retain the historical awiki-deamon name.

It owns Daemon Agent and Runtime Agent DID lifecycles, Runtime plugins, controller-scoped command execution, local UDS RPC, workspace/session/audit state, runtime inbox and final-reply outbox, and SecretVault persistence for Daemon secrets. Concrete runtimes do not hold DID private keys or connect directly to Message Service.

crates/im-core-dart

Exposes the Rust facade through flutter_rust_bridge; it does not own app presentation models.

packages/awiki_im_core

The Flutter/Dart SDK provides native Android, iOS, macOS, and Linux entry points; identity-vault operations; DTOs, async APIs, and realtime streams; local conversation/thread projections; and high-level send, read-state, sync, and realtime APIs. Web is currently a stub that throws UnsupportedError.

skills

Provides task routing and security rules for agents. Skills do not duplicate business logic; they direct agents to the CLI, Daemon, SDK, and stable documentation.

3. Dependency direction

flowchart TD
    CLI[crates/awiki-cli] --> Core[crates/im-core]
    Daemon[crates/awiki-deamon] --> Core
    FFI[crates/im-core-dart] --> Core
    Dart[packages/awiki_im_core] --> FFI
    App[awiki-me] --> Dart
    Runtime[Runtime Plugins] --> Daemon
    Skill[AWiki Skill] --> CLI

Reverse dependencies are forbidden: Core does not depend on app UI; the Dart SDK does not contain AWiki Me presentation/cache models; Runtime plugins do not hold identity private keys; and Skills do not become another business implementation layer.

4. Product and development entry points

RoleProduct entry pointDevelopment entry point
Terminal userawiki-clicrates/awiki-cli
AgentAWiki Skill and awiki-cliskills/
Rust integratorawiki-im-corecrates/im-core
Flutter integratorawiki_im_corepackages/awiki_im_core
Runtime developerAWiki Daemoncrates/awiki-deamon
AWiki Me developerAWiki MeSibling SDK build scripts

5. Versions and releases

Components have independent package versions but must remain compatible within a release. Publish one provenance/compatibility record rather than showing only separate version numbers.

Record at least the CLI package version and commit, awiki-im-core version, Daemon version, Flutter SDK version/native artifact commit, ANP SDK commit, compatible service versions, and platform target. Resolve any release-config/crate-version mismatch before release, or document distinct roles such as wrapper channel version and binary crate version.