YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

Continuous Astra v1 — shareable harness snapshot

Uses only gpt-5.6-luna, your own OpenAI key and AgentMail inbox. Python 3.11+; no packages to install.

This version contains the complete harness, offline tests, Aegis fixtures and deployment files. config.py is intentionally empty (zero bytes). No credentials, runtime state, email history, logs, virtual files, lock files or compiled caches are included. The built-in contact email addresses are intentionally retained.

Configure your own deployment

Before running, populate the empty config.py locally with your own values, or set the corresponding environment variables:

OPENAI_API_KEY = ""
AGENT_MAIL_API_KEY = ""
AGENT_MAIL_ADRESS = ""

The original spelling AGENT_MAIL_ADRESS is required in the file; AGENT_MAIL_ADDRESS is also supported as an environment variable. Empty values will fail validation. Review CONTACTS and the system prompt in astra.py before live use: the first wake can email the retained contacts. Keep populated configuration private and share only an empty copy.

Memory and contacts are just virtual files: memory.md and contacts.md, stored at runtime inside sandbox/files.json. The system prompt instructs Astra to read both at the start of every wake, create them if missing, and update durable memories and contact information. These files contain no backed-up data in this snapshot; a new deployment starts fresh.

Versioned harness snapshots

Keep this snapshot under backups/continous_astra_v1/. Add later versions as sibling folders such as backups/continous_astra_v2/; preserve earlier versions. For each version, copy only reviewed source, documentation, launch/deployment files and test fixtures, create an empty config.py, and scan for secrets before sharing. Never recursively copy the live project or its backups/ directory. Exclude .env*, populated configuration, state.json*, astra_log.txt, astra.lock, sandbox/, data/, caches, environments and repository history. Ignore files help prevent accidental commits/build inclusion but do not sanitize a folder or ZIP after use.

Start on this laptop

powershell -ExecutionPolicy Bypass -File .\start.ps1

Run from this project folder. First live wake instructs Astra to email AG and Alex confirming it is online. Stop with Ctrl+C. Check credentials without sending mail: powershell -ExecutionPolicy Bypass -File .\start.ps1 -Check. -Once performs one real wake, including emails.

Running the same command again resumes the saved cycle, mail history, virtual notes and schedule without launch confirmations. In an interactive terminal, repeat launches ask what Astra should do first. Press Enter to keep the saved schedule, or type an instruction to trigger an immediate wake with that priority. The instruction is saved until a successful wake; failed wakes retain it for retry. You can also pass -Instruction "Review my project notes first", or -NoPrompt to resume unattended. Non-interactive launches (including Docker) never wait for input.

Closing the lid must not put the host to sleep. Local operation requires power, internet, an awake laptop, and the process remaining open. Configure Windows plugged-in lid action to “Do nothing” and plugged-in sleep to “Never” if running locally. The app does not change your power settings. A reboot terminates the local foreground process.

Run independently of your laptop

Copy this project and config.py securely to an always-on Linux server with Docker Compose installed, then run there:

docker compose up -d --build

This is the recommended mode for closing or turning off your laptop. It restarts the agent after process crashes and server reboots, provided Docker starts at boot. Persistent data is in data/. Stop with docker compose down; data survives. Run only one deployment per inbox. No server has been provisioned or deployed automatically.

Behavior

  • Checks all received inbox pages every wake, fetches full message bodies, and exposes newest messages first. Pending replies persist across restarts; up to 100 pending messages enter each wake. Reply/dismiss tools track handled mail. Attachments are not downloaded.
  • Normally at most five model responses per wake, with multiple tool calls allowed per response. An Aegis input() request extends that wake to at most 20 total responses, including those already used. Calls on the final response execute; pending Aegis runs are discarded when the wake ends. Repeated scripts cannot reset the cap.
  • schedule_next_turn(minutes) accepts integers 10–60; last valid call wins. Without it, next wake is 30 minutes after completion. Missed wakes run once on restart, without replaying every missed interval.
  • Hosted OpenAI web search/browsing supports news research. The prompt requests meaningful AI/existential-event alerts, source verification, and avoidance of spam and email loops.
  • AG: aggm.software@gmail.com. Alex: sheireaxel@gmail.com.
  • Virtual create/read/list/write/append/delete/rename/line editing operate only on JSON keys inside sandbox/files.json. Even path-like names are inert strings. Limit: 10 MB. Aegis provides bounded calculation over those virtual scripts; no shell, host-code execution, real file access, or arbitrary HTTP tools are exposed to the model. The trusted runtime separately maintains credentials, logs, scheduling and mail state.
  • Every observable request, complete API response, tool call/result, received/sent email, error, schedule and minute heartbeat is timestamped in astra_log.txt. API keys are redacted. Hidden model reasoning and provider-internal operations are not available to log. The log contains private emails and grows without automatic deletion; monitor disk space.
  • A persistent outbox suppresses identical repeat sends. Crashes/timeouts during sending are marked delivery_uncertain to avoid blind retries; inspect AgentMail delivery and state.json before manually clearing such an entry. Exactly-once email delivery cannot be guaranteed across a network failure. Uncertain replies remain held for operator review.

Configuration uses existing OPENAI_API_KEY, AGENT_MAIL_API_KEY, AGENT_MAIL_ADRESS (original spelling). Same-named environment variables override the file; AGENT_MAIL_ADDRESS is also accepted. Keep config.py private. ASTRA_DATA_DIR changes runtime data location. To deliberately reset onboarding and mail tracking, stop Astra and clear/delete BOTH state.json and astra_log.txt in that data directory. Virtual notes in sandbox/files.json remain unless separately cleared. Each state save also writes a recovery checkpoint to the log, increasing its size. If only state is cleared, Astra recovers from the log; older logs without checkpoints require restoring state or explicitly clearing both files. Invalid nonempty state files produce an error rather than silently resetting.

Tests: python -m unittest -v. Running incurs OpenAI token/web-search and any AgentMail charges. Continuous operation depends on host, network, account limits, and available disk space.

Aegis 0.1

The system prompt teaches Astra to create reusable virtual .aeg files and call aegis_docs() before writing its first script in a wake. This documentation tool returns six complete valid programs with sample inputs, expected outputs and language rules. The agent creates a virtual file, then calls run_ag_file(filename) with the extension. The run tool reads only the virtual store: a matching real disk file is never opened. provide_ag_input(value) supplies a string to the current paused program. See AEGIS.md for the language and boundary.

print("Supply a name")
name = input()
print("Hello, " + name)

The first run returns status: "input_required", cumulative captured output, and the input's source line, column and request index. Astra gets another response to call provide_ag_input with the needed text. Execution resumes exactly where it stopped, and eventually returns {status: "ok", output: "...", error: null}. Waiting on the model does not consume active execution time. Only one run can wait at a time. The source is snapshotted at launch; editing its virtual file does not change a paused run.

aegis_test/ contains eight sample scripts, including three intentional rejections. python -m unittest -v runs every sample directly and through run_ag_file in a temporary virtual store, then checks language semantics, limits, error sanitization, input continuations, and response caps. Tests use fake APIs and send no mail. The sample files on disk are test fixtures; they are not automatically imported into the agent's private virtual store. No live agent restart is performed by tests.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support