MarvisX OSS — agent-native company-brain CLI runtime (init, status, brief, triage)
Project description
marvis init
Interactive bootstrap wizard for MarvisX OSS. Five prompts (license,
storage, BYOK, first project, recap) reusing the shared core/wizard/
state machine so the CLI and the Console /welcome route produce
byte-identical settings when given the same answers.
Install
pip install marvisx-cli
marvis init
Pre-install (clone and run) works too:
python -m core.cli.marvis_init init
Quick start (interactive)
marvis init
You will be asked:
- License — accept BSL 1.1 (
y/n). - Storage — projects root path, database backend (
sqliteorpostgres), and either the SQLite file path or the Postgres DSN. - LLM provider (BYOK) —
anthropic,openai,mac_gateway,bedrock, orskip. API key prompt is hidden input. Mac gateway asks for the base URL. - First project — name, slug, and type (
code,work,system). - Recap — review choices, confirm.
On confirmation the wizard writes:
~/.marvis/settings.yaml— workspace + storage + llm choice (no secrets), chmod 600.~/.marvis/master.key+~/.marvis/byok.vault— Fernet-encrypted API key store (only if a provider was chosen).<projects_root>/<slug>/project.yaml— first project seed.
Non-interactive / CI
marvis init \
--accept-bsl \
--no-interactive \
--projects-root /var/lib/marvis/projects \
--db-backend sqlite \
--db-path /var/lib/marvis/console.db \
--llm-provider anthropic \
--llm-api-key "$ANTHROPIC_API_KEY" \
--project-name "Local Workspace" \
--project-slug local-workspace \
--project-type code
YAML preset (preferred for repeatable provisioning):
marvis init --no-interactive --config init.yaml
init.yaml:
welcome:
bsl_accepted: true
storage:
projects_root: /var/lib/marvis/projects
db_backend: sqlite
db_path: /var/lib/marvis/console.db
llm_provider:
provider: anthropic
api_key: sk-ant-...
first_project:
name: Local Workspace
slug: local-workspace
type: code
Dry run
marvis init --dry-run --accept-bsl --no-interactive ...
Prints the planned filesystem writes and the rendered settings.yaml
without touching the disk. Exit 0.
Exit codes
| Code | Meaning |
|---|---|
| 0 | Success (or dry-run) |
| 1 | Generic runtime error |
| 2 | User abort at recap confirmation |
| 3 | Validation failure (field-level errors printed) |
Tests
python -m pytest tests/test_cli_marvis_init.py
Ten cases cover dry-run, non-interactive flags, YAML preset, BYOK vault
write, invalid slug rejection, Postgres backend, interactive prompts via
CliRunner(input=...), BSL gate, and show-state JSON dump.
Relation to core/scripts/marvis-init.sh
marvis-init.sh (bash) is a deploy bootstrap: copies
deploy/_template/, renders .env with secrets, runs
setup-server.sh, and brings up Docker Compose. It targets server
administrators provisioning a host.
marvis init (this Python CLI) is an onboarding wizard: writes
settings.yaml + BYOK vault + first project seed in the user's home.
It targets OSS users running MarvisX locally.
The two flows are complementary and will converge in a later phase. Until then both ship side-by-side.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file marvisx_cli-0.1.0.tar.gz.
File metadata
- Download URL: marvisx_cli-0.1.0.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6a1d75ebd7868d0c03b7dd4c89f5439eaad3ae469457d066593a2f238d7116b
|
|
| MD5 |
8319ef08eaad6bb6e0b28db6bd5dac01
|
|
| BLAKE2b-256 |
943c10823b7004946e664538a676c6a4078e13f808f65b6e7e2a11f83227f1be
|
Provenance
The following attestation bundles were made for marvisx_cli-0.1.0.tar.gz:
Publisher:
release.yml on emiliomartucci/marvisx-oss
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
marvisx_cli-0.1.0.tar.gz -
Subject digest:
d6a1d75ebd7868d0c03b7dd4c89f5439eaad3ae469457d066593a2f238d7116b - Sigstore transparency entry: 1671388845
- Sigstore integration time:
-
Permalink:
emiliomartucci/marvisx-oss@f35fcd8a9067c107b3dbc13f195ecf2bd34f917f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emiliomartucci
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f35fcd8a9067c107b3dbc13f195ecf2bd34f917f -
Trigger Event:
push
-
Statement type:
File details
Details for the file marvisx_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: marvisx_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 1.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e561dcabe1d400282e0640aadf7f0dbc7dc0b41f95c6dc589f1775a2f8d4bd3e
|
|
| MD5 |
4e10451cc311c9954c3277f73cbf31fa
|
|
| BLAKE2b-256 |
e501f36e09c91cf276182d91189e372bfc278f56e9d75ae1b4647471656dc02c
|
Provenance
The following attestation bundles were made for marvisx_cli-0.1.0-py3-none-any.whl:
Publisher:
release.yml on emiliomartucci/marvisx-oss
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
marvisx_cli-0.1.0-py3-none-any.whl -
Subject digest:
e561dcabe1d400282e0640aadf7f0dbc7dc0b41f95c6dc589f1775a2f8d4bd3e - Sigstore transparency entry: 1671388895
- Sigstore integration time:
-
Permalink:
emiliomartucci/marvisx-oss@f35fcd8a9067c107b3dbc13f195ecf2bd34f917f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emiliomartucci
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f35fcd8a9067c107b3dbc13f195ecf2bd34f917f -
Trigger Event:
push
-
Statement type: